zoukankan      html  css  js  c++  java
  • 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);
        }
  • 相关阅读:
    如何在百度文库里面免费下载东西
    CompareTo
    MySql常用日期函数(转载)
    Oracle之ORDER BY
    Spring之Ioc
    在使用与测绘有关软件中的困难
    HDOJ_1008_Elevator
    HDOJ_1005_Number Sequence
    HDOJ_1004_Let the Balloon Rise
    HDOJ_1003_MaxSum
  • 原文地址:https://www.cnblogs.com/hotsnow/p/10082376.html
Copyright © 2011-2022 走看看