LeetCode 计数二进制子串

696. 计数二进制子串

LeetCode 计数二进制子串_第1张图片

相邻数目计算

包含0、1,必须有连续为0和1且连续数量相同;所以只需要统计相邻的0、1数目,再取连续个数小的相加,这是因为连续数量相同,再逐个减少都符合。

    public int countBinarySubstrings(String s) {
        int cur = 0, last = 0, sum = 0;
        Character ch = s.charAt(0);
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == ch) {
                ++cur;
            } else {
                sum += Math.min(cur, last);
                //System.out.println("cur = " + cur + ";  last = " + last);
                last = cur;
                ch = s.charAt(i);
                cur = 1;
            }
        }
        sum += Math.min(cur, last); // 超出数组,最后一次计算
        return sum;
    }

LeetCode 计数二进制子串_第2张图片

你可能感兴趣的:(Java)