查找字符串最長迴文

查找字符串最長迴文

Longest Palindromic Substring

  • Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.

  • Example:

Input: "babad"
Output: "bab"
  • Note: “aba” is also a valid answer.

  • Example:

Input: "cbbd"
Output: "bb"

思路

  1. 迴文有奇迴文和偶迴文,abcba是奇迴文,abccba是偶迴文
  2. 迴文都是中心對稱,找到對稱點後,同時向前後尋找回文的最長串即可
  3. 奇迴文和偶迴文可以歸爲同一種情況,即abcbac爲對稱點,abccbacc爲對稱點,但爲了代碼可讀性,可以分開討論

代碼

class Solution(object):

    def longestPalindrome(self, s):
        """
        :type s: str
        :rtype: str
        """
        self.maxlen = 0
        self.retstr = ''
        if len(s) < 2:
            return s
        for i in range(len(s)):
            self.__find_palindrome(s, i, i) #奇迴文
            self.__find_palindrome(s, i, i+1) #偶迴文
        return self.retstr


    def __find_palindrome(self, s, j, k):
        while j >= 0 and k < len(s) and s[j] == s[k]:
            j -= 1
            k += 1
        if self.maxlen < k - j + 1:
            self.maxlen = k - j + 1
            self.retstr = s[j+1:k]

本題以及其它leetcode題目代碼github地址: github地址

發佈了29 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章