# 给定一个字符串 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"))
网友评论