码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode 696

时间:2018-12-07 14:54:42      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:mes   sub   some   als   class   because   ++   leetcode   equal   

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

标签:mes   sub   some   als   class   because   ++   leetcode   equal   

原文地址:https://www.cnblogs.com/hotsnow/p/10082376.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!