首页 > 其他 > 详细

leetcode-696-计数二进制子串

时间:2020-08-11 00:21:38      阅读:96      评论:0      收藏:0      [点我收藏+]

题目描述:

技术分享图片

 

 技术分享图片

 

 提交:

class Solution:
    def countBinarySubstrings(self, s: str) -> int:
        if not s:
            return 0
        res = 0
        count = [0,0]
        for i in range(len(s)):
            num = int(s[i])
            if i == 0:
                count[num] += 1
            elif s[i] == s[i-1]:
                count[num] += 1
                if count[num] <= count[1 - num]:
                    res += 1
            else:
                count[num] = 1
                if count[num] <= count[1 - num]:
                    res += 1
        return res

优化:

class Solution:
    def countBinarySubstrings(self, s: str) -> int:
        # 遍历字符串的同时记录每一个字母的个数就行了
        if not s:
            return 0
        
        cur = s[0]
        last_count, cur_count = 0, 1
        res = 0
        for a in s[1:]:
            if a == cur:
                cur_count += 1
                if cur_count <= last_count:
                    res += 1
            else:
                res += 1
                last_count, cur_count = cur_count, 1
            cur = a
        
        return res

 

leetcode-696-计数二进制子串

原文:https://www.cnblogs.com/oldby/p/13473097.html

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