难度:中等

给你一个字符串 s,找到 s 中最长的回文子串。

示例 1:

输入:s = “babad”
输出:”bab”
解释:”aba” 同样是符合题意的答案。、

示例 2:

输入:s = “cbbd”
输出:”bb”

提示:

1 <= s.length <= 1000
s 仅由数字和英文字母组成

暴力求解,列举所有的子串,判断是否为回文串,保存最长的回文串。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#暴力破解
class Solution:
def longestPalindrome(self, s: str) -> str:
l=len(s)
result=""
temp=""
if l==1:
return s
for i in range(l):
for j in range(i+1,l+1):
temp=s[i:j]
if temp==temp[::-1] and len(temp)>len(result):
result=temp
return result

时间复杂度:两层 for 循环 O(n²)O(n²),for 循环里边判断是否为回文 O(n)O(n),所以时间复杂度为 O(n³)O(n³)。

空间复杂度:O(1)O(1),常数个变量。