class Solution:
def longestPalindrome(self, s: str) -> str:
strLen = len(s)
if strLen < 2:
return s
begin = 0
resLen = 1
dp = [[False]*strLen for i in range(strLen)]
for i in range(strLen):
dp[i][i] = True
charArr = list(s)
for L in range(2, strLen+1):
for i in range(strLen):
j = i+L-1
if(j >= strLen):
break
if charArr[i] == charArr[j]:
if j-i <= 2:
dp[i][j] = True
else:
dp[i][j] = dp[i+1][j-1]
else:
dp[i][j] = False
for i in range(strLen):
for j in range(i+1, strLen):
if dp[i][j] == True:
if j-i+1 > resLen:
begin = i
resLen = j-i+1
return s[begin:begin+resLen]
最长回文子串
最新推荐文章于 2024-09-13 19:41:31 发布