最长回文子串python解法
【题目】
【解题思路】
只采用暴力解法,以后有时间研究研究更快捷的方法(中心枚举法,马拉车算法)。
接下来是思路:第一层循环i从第一个字符开始到最后一个字符,
第二层循环j从i+2 (原因一个字符本身就是回文串,所以是从两个字符开始判断) 开始一直到len(s)+1(由于s[i:j]切片范围是到i-j-1),判断字符串正反序是否相等(判断回文串的条件)。
【python代码】
class Solution(object):
def longestPalindrome(self, s):
"""
:type s: str
:rtype: str
"""
if len(s) <= 1:
return s
max_l = 0
for i in range (len(s)):
for j in range (i+2, len(s)+1):
print (s[i:j], s[i:j][::-1])
if s[i:j] == s[i:j][::-1]:
le = j-i
print("le:",le)
if max_l < le:
max_l = le
max_s = s[i:j]
print (max_s)
return max_s
s='1bcb1'
solution = Solution()
solution.longestPalindrome(s)
【结果】
1b b1
1bc cb1
1bcb bcb1
1bcb1 1bcb1
le: 5
bc cb
bcb bcb
le: 3
bcb1 1bcb
cb bc
cb1 1bc
b1 1b
1bcb1