题目描述:
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为1000。
示例 1:
输入: "babad" 输出: "bab" 注意: "aba"也是一个有效答案。
示例 2:
输入: "cbbd" 输出: "bb"
答案
class Solution:
def longestPalindrome(self, s):
k = len(s)
olist = [0] * k # 申请长度为n的列表,并初始化
nList = [0] * k # 同上
logestSubStr = ""
logestLen = 0
for j in range(0, k):
for i in range(0, j + 1):
if j - i <= 1:
if s[i] == s[j]:
nList[i] = 1 # 当 j 时,第 i 个子串为回文子串
len_t = j - i + 1
if logestLen < len_t: # 判断长度
logestSubStr = s[i:j + 1]
logestLen = len_t
else:
if s[i] == s[j] and olist[i+1]: # 当j-i>1时,判断s[i]是否等于s[j],并判断当j-1时,第i+1个子串是否为回文子串
nList[i] = 1 # 当 j 时,第 i 个子串为回文子串
len_t = j - i + 1
if logestLen < len_t:
logestSubStr = s[i:j + 1]
logestLen = len_t
olist = nList # 覆盖旧的列表
nList = [0] * k # 新的列表清空
return logestSubStr
解释地址
https://leetcode-cn.com/problems/longest-palindromic-substring/solution/