申请做网站要什么局/在线网站分析工具
LeetCode 热题 HOT 100之最长回文子串
题目5:给你一个字符串 s,找到 s 中最长的回文子串。
方案:中心拓展算法,代码是对算法的实现,看到这个问题后应该尽可能找到最佳的算法,发现回文子串的特点要么是以一个字符为中心拓展,要么是以两个相同字符为中心扩展,考虑这两种情况,将代码实现。
class Solution:def longestPalindrome(self, s: str) -> str:left, right = 0, 0def expand(s, l, r):while l >= 0 and r < len(s) and s[l] == s[r]:l -= 1r += 1return l + 1, r - 1for i in range(len(s)):left1, right1 = expand(s, i, i)if right - left < right1 - left1:left, right = left1, right1left2, right2 = expand(s, i, i + 1)if right - left < right2 - left2:left, right = left2, right2return s[left:right + 1]