最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。
def longestPalindrome(s):
"""
"""
length = len(s)
if length == 0:
return ''
else:
l_str = s[0]
mat = [[False for i in range(length)] for j in range(length)]
# 处理边界条件
for i in range(length):
mat[i][i] = True
for i in range(length-1):
mat[i][i+1] = s[i] == s[i+1]
if mat[i][i+1] and len(l_str) == 1:
l_str = s[i:i+2]
# 注意循环的顺序,动态规划是从短片段到长片段,在遍历到长片段之前,保证所需要的短片段已被处理
for j in range(2, length):
for i in range(length-j):
if mat[i+1][i+j-1] and s[i] == s[i+j]:
mat[i][i+j] = True
if j+1 > len(l_str):
l_str = s[i:i+j+1]
return l_str

浙公网安备 33010602011771号