''' 解题思路: 最长回文子串:方法一:动态规划,方法二:中心双向扩散法、 ''' #--------------------------------------- # 长度为len(L)的字符串,0<=i<=len(L)-1 def length(L,i): n = len(L) i_len = 1 i_start,i_end = i,i t1,t2 = 1,1 #--------------------------------------- # 奇、偶对称其中一个可能提前中止,当两个都中止时,退出 while t1&nbs***bsp;t2: #--------------------------------------- # 向右扩展一个字符(偶对称) if t1 and i_start>=0 and i_end+1<=n-1 and L[i_start] == L[i_end+1]: i_len = (i_end+1) - i_start + 1 # 条件满足时更新i_len(无越界且对称) else: t1 = 0 # 不满足不再更新 #--------------------------------------- # 向左向右各扩展一个字符(奇对称) if t2 and i_start-1>=0 and i_end+1<=n-1 and L[i_start-1]==L[i_end+1]: i_len = (i_end+1) - (i_start-1) + 1 # 条件满足时更新i_len(无越界且对称) else: t2 = 0 # 不满足不再更新 #--------------------------------------- # 左右边界更新,即 i_start -= 1 i_end += 1 return i_len while 1: try: pass L = input() n = len(L) max_len = 0 for i in range(n): i_len = length(L,i) if i_len>max_len: max_len = i_len print(max_len) except: break