Longest Palindromic Substring

medium, Array/String

Question:

给定字符串s, 返回最长回文子字符串

For example
Input: "babad"
Output: "bab"
Note: "aba" is also a valid answer.

Input: "cbbd"
Output: "bb"

Solution

抓住回文关于中心对称的特点(中心可能在两个字母之间)

class Solution(object):
    def longestPalindrome(self, s):
        """
        :type s: str
        :rtype: str
        """
        start, end = 0, 0

        for i in xrange(len(s)):
            len1 = self.expandAroundCenter(s, i, i)
            len2 = self.expandAroundCenter(s, i, i+1)
            maxlen = max(len1,len2)
            if maxlen > end-start:
                start = i - (maxlen-1)/2
                end = i+maxlen/2
        return s[start:end+1]
    
    def expandAroundCenter(self, s, left, right):
        L, R = left, right
        while (L>=0 and R < len(s) and s[L]==s[R]):
            L-=1
            R+=1            
        return R-L-1
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容