# 一个完整的信号是以0开头0结尾的,即010是一个完整信号,101、1010、0101都不是 # 输入一串方波,由一个或多个完整信号组成 # 两个相邻信号之间可能有0个或者多个低位,如0110010、011000010 # 同一信号可以有连续高位如01110101011110001010 # 完整连续方波是指10交替,如01010是完整连续交替方波,0110不是 # # 输入:信号字符串 # 输出最长连续交替方波串,若不存在输出-1 # 输入: 0010101010110000101000010 # # 输出: 01010 import sys def solve_method(in_str): bits = list(in_str) waves = [] first = in_str.find("1") # 左边开始找到第一个1 last = in_str.rfind("1") # 右边开始第一个1 i = first while i <= last: if i + 1 < len(bits) and bits[i] == "0" and bits[i + 1] == "0": # 从左往右找到00 print(first - 1, i + 1, in_str[first - 1:i + 1]) waves.append(in_str[first - 1:i + 1]) # first-1表示左边第一个1的前一位 while i < len(bits) and bits[i] == "0": # 跳过i之后的0,找到下一个1 i += 1 first = i # 找到下一个1的位置 else: i += 1 # 从左往右找00,没找到继续往后找 waves.append(in_str[first - 1:last + 2]) # 添加最后一个符合条件的完整型号010 print('waves',waves) # waves ['010101010110', '01010', '010'] res = [] for wave in waves: n0, n1 = 0, 0 for c in wave: if c == "0": n0 += 1 else: n1 += 1 if n0 - n1 == 1: # 过滤掉010101010110这种 res.append(wave) res.sort(key=len, reverse=True) if res: print(res[0], end="") else: print("-1", end="") if __name__ == "__main__": in_str = sys.stdin.readline().strip() solve_method(in_str)
09-27
500
06-19
1234
08-27
357
07-21
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交