leetcode-696-计数二进制子串

题目描述:

 

 

 

 提交:

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

 

posted @ 2020-08-11 00:02  oldby  阅读(130)  评论(0编辑  收藏  举报