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

相关文章
相关标签/搜索