LeetCode之Count Binary Substrings(Kotlin)

問題: Give a string s, count the number of non-empty (contiguous) substrings that have the same number of 0's and 1's, and all the 0's and all the 1's in these substrings are grouped consecutively. Substrings that occur multiple times are counted the number of times they occur.git

Note: s.length will be between 1 and 50,000. s will only consist of "0" or "1" characters.github


方法: 以0|1做爲分界線,如00|11或者00|111,分界線先後0的長度和1的長度取min的值就是分界線先後的子串數,求全部分界線先後的子串數的和即爲全部子串的個數。bash

具體實現:ui

class CountBinarySubstrings {
    fun countBinarySubstrings(s: String): Int {
        var pre = s[0]
        var curLen = 0
        var preLen = 0
        var result = 0
        for (ch in s) {
            if (ch == pre) {
                curLen++
            } else {
                result += minOf(preLen, curLen)
                pre = ch
                preLen = curLen
                curLen = 1
            }
        }
        result += minOf(preLen, curLen)
        return result
    }
}

fun main(args: Array<String>) {
    val countBinarySubstrings = CountBinarySubstrings()
    val result = countBinarySubstrings.countBinarySubstrings("10101")
    println("result: " + result)
}
複製代碼

有問題隨時溝通spa

具體代碼實現能夠參考Githubcode

相關文章
相關標籤/搜索