题目:
给你一个字符串 s
,找到 s
中最长的回文子串。
如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。
示例 1:
输入:s = "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。
示例 2:
输入:s = "cbbd" 输出:"bb"
提示:
1 <= s.length <= 1000
s
仅由数字和英文字母组成
#力扣官方暴力解法
def validPalindromic(charArray, left, right):
while left < right:
# 判断子串的左右是否对称
if charArray[left] != charArray[right]:
return False
left += 1
right -= 1
return True
class Solution(object):
# 验证某子串是否为回文串
# charArray某子串
# left子串首下标
# right子串尾下标
def longestPalindrome(self, s):
"""
:type s: str
:rtype: str
"""
# 输入字符串的长度
length = len(s)
# 如果字符串为1个或0个字符,则自身是对称
if length < 2:
return s
# 最大子串长度至少为1
maxLen = 1
begin = 0
# 将字符串转换为字符列表
charArray = list(s)
# 枚举所有长度严格大于1的子串
for i in range(length-1):
for j in range(i+1, length):
if (j-i+1) > maxLen and validPalindromic(charArray, i, j):
maxLen = j-i+1
begin = i
return s[begin:begin+maxLen]