[刷题防痴呆] 0696 - 计数二进制子串 (Count Bi

2021-10-10  本文已影响0人  西出玉门东望长安

题目地址

https://leetcode.com/problems/count-binary-substrings/

题目描述

696. Count Binary Substrings

Give a binary string s, return the number of non-empty 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: s = "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: s = "10101"
Output: 4
Explanation: There are 4 substrings: "10", "01", "10", "01" that have equal number of consecutive 1's and 0's.

思路

关键点

代码

class Solution {
    public int countBinarySubstrings(String s) {
        int len = s.length();
        int lastCount = 0;
        int curCount = 1;
        int res = 0;
        char[] sc = s.toCharArray();
        for (int i = 1; i < len; i++) {
            if (sc[i] == sc[i - 1]) {
                curCount++;
            } else {
                res += Math.min(lastCount, curCount);
                lastCount = curCount;
                curCount = 1;
            }
        }

        res += Math.min(lastCount, curCount);

        return res;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读