問(wèn)題696:給定一個(gè)字符串s
,計(jì)算具有相同數(shù)量0
和1
的非空(連續(xù))子字符串的數(shù)量隧甚,并且這些子字符串中的所有0
和所有1
都是組合在一起的强岸。重復(fù)出現(xiàn)的子串要計(jì)算它們出現(xiàn)的次數(shù)。
如下圖所示掩宜,先遍歷字符串蔫骂,用一個(gè)列表存儲(chǔ)字符串中連續(xù)0
和連續(xù)1
的數(shù)量,如下圖所示牺汤。然后辽旋,對(duì)這個(gè)列表,每連續(xù)兩項(xiàng),取較小項(xiàng)的值补胚,加到答案中码耐。
完整代碼:
class Solution(object):
def countBinarySubstrings(self, s):
groups = [1]
for i in range(1, len(s)):
if s[i-1] != s[i]:
groups.append(1)
else:
groups[-1] += 1
ans = 0
for i in range(1, len(groups)):
ans += min(groups[i-1], groups[i])
return ans
運(yùn)行結(jié)果: