中等双指针字符串动态规划
PROBLEM / 研究生阶段
5. 最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。
示例 1:
输入: s = "babad" 输出: "bab" 解释: "aba" 同样是符合题意的答案。
示例 2:
输入: s = "cbbd" 输出: "bb"
提示:
1 <= s.length <= 1000s仅由数字和英文字母组成
参考解法
下面保留的是原始练习仓库中的个人作答,可在右侧工作台中独立重写,再按需揭示对照。
python
class Solution(object):
def longestPalindrome(self, s):
if len(s) < 2:
return s
start = 0
max_len = 1
def expand(left, right):
while left >= 0 and right < len(s) and s[left] == s[right]:
left -= 1
right += 1
return right - left - 1
for i in range(len(s)):
len1 = expand(i, i) # 奇数回文
len2 = expand(i, i + 1) # 偶数回文
current_max = max(len1, len2)
if current_max > max_len:
max_len = current_max
# 计算初始索引
start = i - (current_max - 1) // 2
return s[start:start + max_len]
"""
:type s: str
:rtype: str
"""
YOUR SOLUTION5. 最长回文子串