# 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。
# 回文字段:正着读和倒着读都相同的文字,如abcba,abccba
# 示例 1:
# 输入: "babad"
# 输出: "bab"
# 注意: "aba"也是一个有效答案。
# 难度:中等
class Solution:
def longestPalindrome(self, s):
"""
:type s: str
:rtype: str
"""
a = 1
if s != '':
b = s[0]
if len(s) > 1 and s[1] == s[0] and a < 2:
a = 2
b = s[0: 2]
else:
b = ''
for i in range(1, len(s) - 1):
for j in range(1, i + 1):
if i - j >= 0 and i + j < len(s):
if s[i - j] != s[i + j]:
break
elif len(s[i - j: i + j + 1]) > a:
a = len(s[i - j: i + j + 1])
b = s[i - j: i + j + 1]
else:
break
if s[i] == s[i + 1]:
if len(s[i: i + 2]) > a:
a = len(s[i: i + 2])
b = s[i: i + 2]
for k in range(1, i + 1):
if i - k >= 0 and i + k + 1 < len(s):
if s[i - k] == s[i + k + 1]:
if len(s[i - k: i + k + 2]) > a:
a = len(s[i - k: i + k + 2])
b = s[i - k: i + k + 2]
else:
break
else:
if a < 2:
a = 2
b = s[i: i + 2]
break
if len(s) == 2:
if s[0] == s[1]:
b = s
return b
print(Solution.longestPalindrome(0, "cbbd"))
5.最长回文子串(方法2)
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 作者:寒小阳 时间:2013年9月。出处:http://blog.csdn.net/han_xiaoyang/ar...
- BAT面试算法进阶(5)- BAT面试算法进阶(5)- 最长回文子串(方法一)BAT面试算法进阶(4)- 无重复字...