5. Longest Palindromic Substring

https://leetcode.com/problems/longest-palindromic-substring/

solution

  • 双指针

class Solution:
    def longestPalindrome(self, s: str) -> str:
        longest = 0
        l = r = 0
        for i in range(len(s)):
            length, left ,right = self.pali(s, i, i)  # 这个写法有点繁杂,只需要返回一个子串,然后选择最长的即可
            if length > longest:
                longest = length
                l = left
                r = right

            length, left, right = self.pali(s, i, i+1)
            if length > longest:
                longest = length
                l = left
                r = right
        return s[l:r+1]

    def pali(self, s, l, r):
        temp_length = 0
        while l >=0 and r < len(s) and s[l] == s[r]:
            if l == r:
                temp_length += 1
            else:
                temp_length += 2
            l -= 1
            r += 1
        return temp_length, l+1, r-1

时间复杂度:O() 空间复杂度:O()

  • 动态规划

follow up-回文类

516. Longest Palindromic Subsequence

时间复杂度:O(n^2) 空间复杂度:O(n^2)

647. Palindromic Substrings

131. Palindrome Partitioning

132. Palindrome Partitioning II

2193. Minimum Number of Moves to Make Palindrome

336. Palindrome Pairs

680. Valid Palindrome II

时间复杂度:O(n) 空间复杂度:O(1)

  • 超时

1216 Valid Palindrome III

1930. Unique Length-3 Palindromic Subsequences

Count of Palindromic Substrings

Last updated