*中心扩展算法
class Solution:
def longestPalindrome(self, s: str) -> str:
def expandArouudCenter(s, left, right):
while left>-1 and right<len(s) and s[left]==s[right]:
left += -1
right += 1
return right-left-1
if len(s)<1:
return ''
start = 0
end = 0
i = 0
while i<len(s):
len1 = expandArouudCenter(s, i, i) #判断奇对称回文对齐
len2 = expandArouudCenter(s, i, i+1) #判断偶对称回文对齐
length = max(len1, len2)
if length>end-start:
start = i-(length-1)//2
end = i+length//2
i+=1
return s[start:end+1]
通过 | 936 ms | 13.8 MB | Python3 |
执行用时 :936 ms, 在所有 Python3 提交中击败了78.99%的用户
内存消耗 :13.8 MB, 在所有 Python3 提交中击败了18.96%的用户
*Manacher 算法
懒~
Ref