96 計數二進位制子串

2021-10-09 03:51:30 字數 1495 閱讀 7171

給定乙個字串 s,計算具有相同數量0和1的非空(連續)子字串的數量,並且這些子字串中的所有0和所有1都是組合在一起的。

重複出現的子串要計算它們出現的次數。

示例 1 :

輸入: "00110011"

輸出: 6

解釋: 有6個子串具有相同數量的連續1和0:「0011」,「01」,「1100」,「10」,「0011」 和 「01」。

請注意,一些重複出現的子串要計算它們出現的次數。

另外,「00110011」不是有效的子串,因為所有的0(和1)沒有組合在一起。

1.暴力

2.先統計連續的0和1的個數,如111100011000,得到4323;在4323中的任意相鄰兩個數字,取小的乙個加起來,就是3+2+2 = 7.

class solution:

def countbinarysubstrings(self, s: str) -> int:

print(s.split("0"))

res=0

for i in range(len(s)):

for j in range(i,len(s)):

now=s[i:j+1]

if len(now)%2!=0 or not now:continue

mid=len(now)//2

left=sum([int(k) for k in now[:mid]])

right=sum([int(k) for k in now[mid:]])

if (left==mid and right==0) or (right==mid and left==0):

res+=1

#print(now," ",left," ",right)

return res

class solution:

def countbinarysubstrings(self, s: str) -> int:

res=

tmp=1

for i in range(1,len(s)):

if s[i]==s[i-1]:

tmp+=1

else:

tmp=1

ans=0

for i in range(1,len(res)):

ans+=min(res[i],res[i-1])

return ans

class solution:

def countbinarysubstrings(self, s: str) -> int:

seq = [0, 1]

res =

for i in range(1, len(s)):

if s[i] == s[i-1]:

seq[1] += 1

else:

seq[0] = seq[1]

seq[1] = 1

return sum(res)

計數二進位制子串

題目描述 給定乙個字串s,計算具有相同數量0和1的非空 連續 子字串的數量,並且這些子字串中的所有0和所有1都是組合在一起的。重複出現的子串要計算它們出現的次數。示例 1 輸入 00110011 輸出 6 解釋 有6個子串具有相同數量的連續1和0 0011 01 1100 10 0011 和 01 ...

計數二進位制子串

目錄 給定乙個字串 s,計算具有相同數量0和1的非空 連續 子字串的數量,並且這些子字串中的所有0和所有1都是組合在一起的。重複出現的子串要計算它們出現的次數。示例1 輸入 00110011 輸出 6 解釋 有6個子串具有相同數量的連續1和0 0011 01 1100 10 0011 和 01 請注...

計數二進位制子串

給定乙個字串 s,計算具有相同數量0和1的非空 連續 子字串的數量,並且這些子字串中的所有0和所有1都是組合在一起的。重複出現的子串要計算它們出現的次數。示例 1 輸入 00110011 輸出 6 解釋 有6個子串具有相同數量的連續1和0 0011 01 1100 10 0011 和 01 請注意,...