对于长度为n的一个字符串A(仅包含数字,大小写英文字母),请设计一个高效算法,计算其中最长回文子串的长度。
数据范围: 1 \le n \le 10001≤n≤1000
遍历字符串,以每个字符为中心向两边扩展,从而得到回文子串的长度,找到最小的即可。值得注意的是,奇数和偶数的回文子串的遍历方法不同,需要进行两遍判断。
def getLongestPalindrome(A):
# write code here
max_len=1
if len(A)==1:
return 1
if len(A)==2:
if A[0]==A[1]:
return 2
else:
return 1
for i in range(1,len(A)):
j=i-1
k=i+1
while(j>=0 and k<len(A)):
if A[j]==A[k]:
max_len=max(k-j+1,max_len)
j-=1
k+=1
else:
break
for i in range(1,len(A)):
j=i
k=i+1
while(j>=0 and k<len(A)):
if A[j]==A[k]:
max_len=max(k-j+1,max_len)
j-=1
k+=1
else:
break
return max_len