这个题解的基本思路是通过遍历给定的二进制字符串 `s`,并统计其中连续'1'的段数。解决方案中定义了几个变量来跟踪连续的'0'和'1'的长度以及它们的段数。核心思想是在遍历字符串的过程中,每当我们从'1'切换到'0'或从'0'切换到'1'时,相应的段数(num0或num1)会增加,并且连续长度(length0或length1)会重置。最后,如果连续的'1'段数(num1)超过1,则返回false,否则返回true。
时间复杂度: O(n)
空间复杂度: O(1)
class Solution:
def checkOnesSegment(self, s: str) -> bool:
# 初始化段数和连续长度计数器
num0 = 0
num1 = 0
length0 = 1
length1 = 1
# 遍历字符串中的每个字符
for i in s:
if (i == '1'):
# 当当前字符为'1'时,增加连续'1'的长度
length1 += 1
if (length0 != 0):
# 如果之前连续的是'0',增加连续'1'段的计数
num1 += 1
length0 = 0
elif (i == '0'):
# 当当前字符为'0',增加连续'0'的长度
length0 += 1
if (length1 != 0):
# 如果之前连续的是'1',增加连续'0'段的计数
num0 += 1
length1 = 0
# 最终,如果连续'1'段数超过1,则返回False
if num1 > 1:
return False
else:
return True