1. 程式人生 > 其它 >擴充套件kmp求最長迴文子串_leetcode 5 最長迴文子串

擴充套件kmp求最長迴文子串_leetcode 5 最長迴文子串

技術標籤:擴充套件kmp求最長迴文子串

cfd82a61f0736c2915d5c720658bd4f7.png

給定一個字串 s,找到 s 中最長的迴文子串。你可以假設 s 的最大長度為 1000。

示例 1:

輸入: "babad"
輸出: "bab"
注意: "aba" 也是一個有效答案。

示例 2:

輸入: "cbbd"
輸出: "bb"
#
# @lc app=leetcode.cn id=5 lang=python3
#
# [5] 最長迴文子串
#

# @lc code=start
class Solution:
    def longestPalindrome(self, s: str) -> str:
        n = len(s)
        ans = 0
        l_str = ''
        def check(l,r):
            nonlocal ans,l_str
            while(l>=0 and r<n):
                if s[l]!=s[r]:
                    break
                if r-l+1>ans:
                    ans = r-l+1
                    l_str = s[l:r+1]
                l-=1;r+=1
        for i in range(n):
            check(i,i)
            check(i,i+1)
        return l_str

# @lc code=end