一道简单题,但是刚拿到居然没有想出来,其实是有点不应该的。虽说官方解法不一定能马上想到,但是基于堆栈的方法应该是要想到的,也就是遇到0压入堆栈,遇到1时弹出,然后进行相关的计算。下面的代码还是采用官方解法,形成一个count
列表再计算:
class Solution:
def countBinarySubstrings(self, s: str) -> int:
idx,size = 0,len(s)
count = []
cnt = 1
res = 0
for idx in range(1,size):
if(s[idx]==s[idx-1]): cnt += 1
else:
count.append(cnt)
cnt = 1
count.append(cnt)
for i in range(0,len(count)-1):
res += min(count[i],count[i+1])
return res