- def solve_313(list1:list):
- B, i,length,first = [list1[0]],1,1,0
- while True:
- if list1[i:i+length] == B:
- i+=length
- elif i+length>=len(list1):
- for a in range(i,len(list1)):
- if list1[a:] == B[:len(list1)-a]:
- first += 1
- break
- else:
- B = list1[:a+1]
- if first == len(list1)-i:
- return len(B)
- elif first == 0:
- return len(list1)
- else:
- return len(B)
- else:
- B = list1[:i+1]
- length = len(B)
- i += 1
- print(solve_313([1,1,1,1]))
- print('测试点1:',solve_313([1,2,1,2,1,2]))
- print('测试点2:',solve_313([1,2,1,2,1]))
- print('测试点3:',solve_313([1,2,1,2,1,4]))
- print('曾经错误的:',solve_313([1]))
- print('曾经错误的:',solve_313([1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 1]))
- print('曾经错误的:',solve_313([1, 1, 1, 3, 2, 1, 1, 1, 1, 3, 2, 1]))
- print('曾经错误的:',solve_313([1, 2, 3, 4, 5]+[1, 2, 3, 4]*10000))
- print(solve_313([1,2,1,2,3,1,2,1,2,1]))
复制代码 |