5.最长回文子串
给你一个字符串 s
,找到 s
中最长的回文子串。
暴力解法:
- 枚举出s的所有子串的左下标值和其长度
- 判断字串是否是回文字串
- 截取子串(begin:begin+maxLen)
第2,3步在算法中都类似,重要的是怎么简化第1步。
class Solution(object):
def longestPalindrome(self, s):
"""
:type s: str
:rtype: str
"""
# 判断 回文子串 的算法
def validPalindromic(s,left,right):
while left < right:#逐个比较左右侧值是否相等
if s[left]!=s[right]:
return False
left+=1
right-=1
return True
n = len(s)
# 判断长度为1的字符串
if n<2:
return s
maxLen = 1
begin = 0
#枚举 所有长度严格大于1的字串,p[i...j]
for i in range(n-1):#右边界前一位