zoukankan      html  css  js  c++  java
  • 0696. Count Binary Substrings (E)

    Count Binary Substrings (E)

    题目

    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.

    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.
    

    Note:

    s.length will be between 1 and 50,000.

    s will only consist of "0" or "1" characters.


    题意

    给定一个只包含1和0的字符串,取子串使满足:子串中字符1排在一起,字符0排在一起,且1的个数和0的个数相等,求这样的子串的个数。

    思路

    从左到右遍历字符串,将所有连续的字符归纳为一个组,相邻组A和B必定是不同字符的集合,那么A和B能组成的有效的子串的个数为min(A.len, B.len)。


    代码实现

    Java

    class Solution {
        public int countBinarySubstrings(String s) {
            int count = 0;
            int pre = 0, cur = 1;
            
            for (int i = 1; i < s.length(); i++) {
                if (s.charAt(i) == s.charAt(i - 1)) {
                    cur++;
                } else {
                    count += Math.min(pre, cur);
                    pre = cur;
                    cur = 1;
                }
            }
            count += Math.min(pre, cur);
            
            return count;
        }
    }
    
  • 相关阅读:
    简化单例模式
    static
    单例模式之懒汉模式
    Car race game
    poj-2403
    poj-2612
    poj-1833
    poj--2782
    poj--2608
    poj--3086
  • 原文地址:https://www.cnblogs.com/mapoos/p/14694134.html
Copyright © 2011-2022 走看看