思路:动态规划优化枚举
一个朴素的算法是:O(n2) 枚举所有子串,然后O(n)的判断这个子串是否是回文串,总复杂度O(n3)
#code-switcher
class Solution:
def longestPalindrome(self, s: str) -> str:
# 判断 s[left:right] 这一段是否是回文串
def is_palindrome(left, right):
P4098.最长回文子串
Leetcode 5.最长回文子串-原题链接
题目描述
给定一个字符串 s,找到 s 中最长的回文子串。
输入描述
输入包含一个字符串 s(1≤∣s∣≤1000),仅由数字和英文字母组成。
输出描述
输出一行,表示 s 中最长的回文子串。如果存在多个答案,返回任意一个。
样例输入 1
babad
样例输出 1
bab
说明:aba 也是符合题意的答案。
样例输入 2
cbbd
样例输出 2
bb
提示
s 仅由 数字 和 英文字母 组成。
s 至少包含 1 个字符。
- 若存在多个答案,返回 任意一个。