首页 > 其他 > 详细

LeetCode 696 计数二进制子串

时间:2020-08-10 20:47:22      阅读:79      评论:0      收藏:0      [点我收藏+]

Leetcode 696 计数二进制子串

给定一个只包含0,1的字符串,假设一个连续子串中若包含相同数量的0,1且不交错分布则为一个满足要求的子串,求给定字符串中有多少个满足要求的子串。
方法: 交替对连续的0,1子串进行计数。当已经计数有last个连续的0时,若接下来又计数有count个连续的1,则last个0、count个1组成的子串中满足要求的子串一共有min(last, count)个

执行用时:10 ms, 在所有 Java 提交中击败了87.83%的用户
内存消耗:40.2 MB, 在所有 Java 提交中击败了61.54%的用户

class Solution { 
    public int countBinarySubstrings(String s) {
        int ptr = 0, n = s.length(), last = 0, ans = 0;
        while (ptr < n) {
            //c记录每一次记录的子串元素
            char c = s.charAt(ptr);
            //记录当前子串中相同字符c的数量
            int count = 0;
            while (ptr < n && s.charAt(ptr) == c) {
                ++ptr;
                ++count;
            }
            //结果值更新
            ans += Math.min(count, last);
            last = count;
        }
        return ans;
    }
}

LeetCode 696 计数二进制子串

原文:https://www.cnblogs.com/CodeSPA/p/13471889.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!