‘’’
2023 Q2 200
最长连续方波
输入:
001010101010100001010
输出:
0101010101010
‘’’
def zuichangfangbo(s:str)->str:
ret=ans='' # 最终字符变量与临时连续字符变量。最终结果是最长的临时连续字符
step=prestep='' # 临时连续字符的当前高位宽度,临时连续字符的前一位高位宽度,
for i in range(1,len(s)): # 遍历字符串
if s[i-1]=='0' and s[i]=='0' : #临时连续字符的开始和结束判断,'00' 代表上一个临时字符结束,下一个临时字符开始。临时字符不包括'00',遇到'00' 跳过,并初始化字符和高位宽度变量。
ret= ret if len(ret) > len(ans) else ans
ans = '0'
step=prestep=''
continue
if not prestep and not prestep==step: # 高位宽度不同,不是连续字符,跳过此字符
continue
ans+=s[i] # 拼接临时变量
if s[i]=='0': #变量由1变为0,赋值高位宽度和初始化高位宽度,高位宽度相同,继续遍历,不同则重置临时字符
step=ans.split('0')[-2]
if not prestep:
prestep=step
step=[]
elif prestep==step:
continue
else:
ans=''
if not ret or ret=='0':
return -1
else:
return ret