📌  相关文章
📜  给定二进制字符串中交替子字符串的数量(1)

📅  最后修改于: 2023-12-03 15:27:34.633000             🧑  作者: Mango

给定二进制字符串中交替子字符串的数量

在二进制字符串中,如果一个子字符串中的所有数字都相同,则称该子字符串为连续子串。交替子字符串是由连续的 0 和 1 组成的字符串,其中 0 和 1 交替出现。给定一个只包含「0」和「1」的字符串 s,请计算出 s 中交替子字符串的数量。

解题思路

从左到右扫描字符串,如果遇到两个相邻的数字不同,则当前位置可以作为一个新的子字符串的起始位置,将其存储下来。最后统计子字符串的数量即可。

算法实现
def count_alternating_substrings(s: str) -> int:
    if not s:
        return 0
    count = 1
    start = 0
    for i in range(1, len(s)):
        if s[i] != s[start]:
            count += 1
            start = i
    return count
算法复杂度

该算法只需要一次遍历,时间复杂度为 $O(n)$,只需要常数级别的空间,空间复杂度为 $O(1)$。

总结

本题利用了连续子串的概念,可以更好地理解交替子字符串的性质。本题还有一个优化,即将字符串转化为字符数组进行遍历,可以获得更好的性能。