最长回文串_LeetCode解析,第五题:最长回文子串
生活随笔
收集整理的這篇文章主要介紹了
最长回文串_LeetCode解析,第五题:最长回文子串
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
LeetCode第五題:最長回文子串
5:
英文題面:
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
Example 1:
Input: "babad"Output: "bab"Note: "aba" is also a valid answer.Example 2:
Input: "cbbd"Output: "bb"中文題面:
給定一個字符串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。
示例 1:
輸入: "babad"輸出: "bab"注意: "aba" 也是一個有效答案。示例 2:
輸入: "cbbd"輸出: "bb"思路:
求回文子串,
最簡單的思路是暴力搜索,檢索所有的子串檢查是不是回文串,這個時間復雜度為O(n^3)。
第二可以考慮中心擴展法,對字符串中每個字符考慮為回文串的中心,向兩邊擴張到最大,這里注意有兩種回文串,一個是長度為奇數的回文串,中心為一個字符,長度為偶數的回文串,中心為2個相同的字符。這里時間復雜度是O(n^2)
第三:Manacher算法,時間復雜度為O(n)
實例給出第二種實現代碼:
class Solution(object): def __init__(self): self.max_len = 0 self.start = -1 self.end = -1 def longestPalindrome(self, s): """ :type s: str :rtype: str """ for i in range(len(s)): self.find_str(i,i,s) self.find_str(i,i+1,s) return s[self.start:self.end+1] def find_str(self, left, right,s): while (left>=0 and right self.max_len: self.max_len = right - left - 1 self.start = left+1 self.end = right-1總結
以上是生活随笔為你收集整理的最长回文串_LeetCode解析,第五题:最长回文子串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 发邮件 timeout_p
- 下一篇: python怎么画波浪_python 实