Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
Example:
Input: "babad" Output: "bab" Note: "aba" is also a valid answer.
Example:
Input: "cbbd" Output: "bb"
def longestPalindrome(s): # 构造 $#a#a#a#v# l = '$#' for i in s: l+=(i+'#') maxInd = 0;mx = 0 p = [0 for i in range(len(l))] for i in range(1,len(l)): if mx>i: p[i] = min(mx-i,p[2*maxInd-i]) #两种情况(边界是否超出) else: p[i] = 1 while (i-p[i]>=0)and(i+p[i]<len(l))and(l[i+p[i]] == l[i-p[i]]): p[i]+=1 if (i+p[i])>mx: mx = i+p[i] maxInd = i #结果解析 n = max(p) i = p.index(n) sub = l[i-n+1:i+n] result = '' for i in sub: if i!='#': result+=i return result