leetcode 696

Posted 热之雪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 696相关的知识,希望对你有一定的参考价值。

696. Count Binary Substrings

Input: "00110011"
Output: 6
Explanation: There are 6 substrings that have equal number of consecutive 1‘s and 0‘s: "0011", "01", "1100", "10", "0011", and "01".

Notice that some of these substrings repeat and are counted the number of times they occur.
Also, "00110011" is not a valid substring because all the 0‘s (and 1‘s) are not grouped together.
First, I count the number of 1 or 0 grouped consecutively.
For example "0110001111" will be [1, 2, 3, 4].

Second, for any possible substrings with 1 and 0 grouped consecutively, the number of valid substring will be the minimum number of 0 and 1.
For example "0001111", will be min(3, 4) = 3, ("01", "0011", "000111")

//////////////////////

 int countBinarySubstrings(string s) {
        int cur = 1, pre = 0, res = 0;
        for (int i = 1; i < s.size(); i++) {
            if (s[i] == s[i - 1]) cur++;
            else {
                res += min(cur, pre);  //主要是这里的技巧,比如"0001111", will be min(3, 4) = 3, ("01", "0011", "000111")
                pre = cur;
                cur = 1;
            }
        }
        return res + min(cur, pre);
    }

 



以上是关于leetcode 696的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 696. Count Binary Substrings

LeetCode 696. Count Binary Substrings

[LeetCode&Python] Problem 696. Count Binary Substrings

[leetcode]String-696. Count Binary Substrings

LeetCode 696. Count Binary Substrings 思路解析

Leetcode 696. Count Binary Substrings