题解 | #密码截取#
密码截取
http://www.nowcoder.com/questionTerminal/3cd4621963e8454594f00199f4536bb1
对称有奇数对称和偶数对称的,分开来弄
string_a=input()
list_three=[]list_fore=[]
max_len=0
for i in range(len(string_a)-2):
if string_a[i:i+3]==string_a[i:i+3][::-1]:
list_three.append(i+1) #取奇数对称的中心坐标
for i in range(len(string_a)-3):
if string_a[i:i+4]==string_a[i:i+4][::-1]:
list_fore.append(i+1) #取偶数对称的中心靠左的坐标
# print(list_three)
# print(list_fore)
count_three=0
for i in list_three:
for j in range(1,len(string_a)//2+1): #最长也就是一半
# print(j)
if i-j>=0 and string_a[i-j:i+j+1]==string_a[i-j:i+j+1][::-1]:
count_three = max(count_three, j)
continue
else:
break
# print("count_three:",count_three)
count_fore=0
for i in list_fore:
for j in range(1,len(string_a)//2): #最长也就是一半
if i-j>=0 and string_a[i-j:i+j+2]==string_a[i-j:i+j+2][::-1]:
count_fore = max(count_fore, j)
continue
else:
break
# print("count_fore:",count_fore)
max_len=max(count_three*2+1,count_fore*2+2)
print(max_len)