[LeetCode] 5. Longest Palindromic Substring

4914 ワード

Longest Palindromic Substring



コード#コード#

class Solution:
    def longestPalindrome(self, s: str) -> str:
        def expand(left: int, right: int) -> str:
            while left >= 0 and right < len(s) and s[left] == s[right]:
                left -= 1
                right += 1
            return s[left + 1:right]

        if len(s) < 2 or s == s[::-1]:
            return s

        result = ""
        for i in range(len(s)):
            result = max(result,
                         expand(i, i + 1),
                         expand(i, i + 2),
                         key=lambda x: len(x))
        return result

方法


  • 偶数文字、奇数文字に分けて
  • を考慮
  • デュアルポインタを使用します.

  • 回文文字は、偶数/奇数の長さであってもよい.
    考慮すべきことは、짝수および홀수文字である.
    ここでのポイントは、偶数文字と奇数文字を同時に考慮することです.

  • 確認文字の範囲をダブルポインタで拡大