def longestPalindrome(ss):
if len(ss)==0:
return None
s=[]
s.append('#')
for k in ss:
s.append(k)
s.append('#')
max_len=0
start=0
end=0
for i in range(len(s)):
low=i-1
high=i+1
while low>=0 and high<len(s):
if s[low]==s[high]:
low-=1
high+=1
else:
break
if i-low>max_len:
max_len=i-low
start=low+1
end=high
return ''.join(s[start+1:end:2])#输出的时候去掉#字符
注解:该方法是从第一个元素开始遍历,每遍历到一个元素就开始左右各放置一个指针,分别进行判断是否左右对称位置字符相等,一开始加一个#号,这样无论对于abbc(回文串为bb),还是abcbd,或者是a(单个),这样的都能统一处理了。时间复杂度大概为O(n^2)