zoukankan      html  css  js  c++  java
  • 696. Count Binary Substrings

    Question

    696. Count Binary Substrings

    Example 1:

    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.
    

    Example 2:

    Input: "10101"
    Output: 4
    Explanation: There are 4 substrings: "10", "01", "10", "01" that have equal number of consecutive 1's and 0's.
    

    Solution

    思路:题目大意是,给一个二进制的字符串,问有多少子串的0个数量等于1的数量且子串中0和1不能交替出现。

    00110011
      zeroCount oneCount last
    0 1         0         -1->0  
    0 2         0         0
    1 2         1         0->1      有一个符合要求的子串01
    1 2         2         1         有一个符合要求的子串0011
    0 1         2         1->0      有一个符合要求的子串10
    0 2         2         0         有一个符合要求的子串1100
    1 2         1         0->1      有一个符合要求的子串01
    1 2         2         1         有一个符合要求的子串0011
    

    Java实现:

    public int countBinarySubstrings(String s) {
        // 子串满足
        // 1)0和1个数相等
        // 2)0与1不能交替出现
    
        int ans = 0;
        int zeroCount = 0;
        int oneCount = 0;
        int last = -1;
        for (int i=0; i<s.length(); i++) {
            char c = s.charAt(i);
            if (c == '0') {
                if (last == -1 || last == 1) {
                    zeroCount = 0;
                    last = 0;
                }
                zeroCount++;
            } else {
                if (last == -1 || last == 0) {
                    oneCount = 0;
                    last = 1;
                }
                oneCount++;
            }
            if (last == 0) ans += zeroCount<=oneCount?1:0;
            else ans += oneCount<=zeroCount?1:0;
        }
        return ans;
    }
    
  • 相关阅读:
    iOS:不同属性声明方式的解析
    iOS:图像和点击事件
    iOS:NAV+TABLE结合
    iOS:实现表格填充和选择操作
    iOS: 填充数据表格
    iOS:导航栏的工具条和导航条
    iOS:使用导航栏
    hello,world不使用ARC
    iOS代码实现:创建按钮,绑定按钮事件,读取控件值
    iOS版 hello,world版本2
  • 原文地址:https://www.cnblogs.com/okokabcd/p/9245719.html
Copyright © 2011-2022 走看看