暴力解法:截取字符串的所有子串,然后依次判断子串是否是回文字符串,并返回最长的回文字符串
python写法:
class Solution:
# self返回的是类的实例化,在类中的方法需要在函数参数里传入self
def longestPalindrome(self, s):
if (len(s) < 2):
return s
start = 0 # 记录最长回文子串开始的位置
maxLen = 0 # 记录最长回文子串的长度
for i in range(len(s) - 1):
for j in range(i, len(s)): # j从i开始,不从i+1开始,s=‘ac’就能选第一个‘a’
# 因为截取的子串即使是回文串也不可能是最大的,所以不需要判断
if (j - i < maxLen):
continue
if self.isPalindrome(s, i, j) and (maxLen < j - i + 1):
# maxLen为最大长度时,后面maxLen<j-i+1 就为False,能保证截取最长回文字符串
start = i
maxLen = j - i + 1
return s[start:start + maxLen]
# 判断是否是回文串
def isPalindrome(self, s, start, end):
while (start < end):
if s[start] != s[end]:
return False
start += 1
end -= 1
return True
s = "ac"
S = Solution()
result = S.longestPalindrome(s)
print(result)