原始问题:
游游的字符串好子串计数问题:前缀0多于1的子串数量计算
思路:
- 初始化计数器count为0,用于记录好子串的数量。
- 初始化两个指针left和right,分别表示当前子串的左右边界。
- 遍历字符串中的每个字符,根据字符的值更新left和right指针。
- 如果遇到'0',则将left指针向右移动一位,并将count加1。
- 如果遇到'1',则将right指针向右移动一位,并检查left指针是否大于等于right指针,如果是,则将count减1。
- 遍历结束后,返回count作为结果。
代码如下:
def count_good_substrings(s: str) -> int:
count = 0
left = 0
right = 0
while right < len(s):
if s[right] == '0':
left = right + 1
count += 1
elif left >= right:
count -= 1
right += 1
return count
# 测试
s = "00110"
print(count_good_substrings(s)) # 输出:3
Prev:游游探寻字符矩阵中直角三角形的数量