美文网首页
LeetCode 5. Longest Palindromic

LeetCode 5. Longest Palindromic

作者: 费城的二鹏 | 来源:发表于2018-11-13 20:21 被阅读0次

Longest Palindromic Substring

输入一个字符串,输出最长回文子串

直接按照中心点向两边判断,未用 Manacher 写法,待补充

# todo Manacher

class Solution:
    def longestPalindrome(self, s):
        """
        :type s: str
        :rtype: str
        """

        if len(s) == 0:
            return ""

        origin = ""
        for index in range(len(s)):
            origin = origin + "#" + s[index]
        origin = origin + "#"

        maxLen = 0
        maxLenCenter = 0

        for index in range(len(origin)):
            left = index
            right = index
            length = 0
            while left >= 0 and right < len(origin):
                if origin[left] == origin[right]:
                    length = length + 1
                    left = left - 1
                    right = right + 1
                else:
                    break

            if length > maxLen:
                maxLen = length
                maxLenCenter = index

        # print(s)
        print(origin)
        print(maxLenCenter, maxLen)
        print(maxLenCenter - maxLen + 1,  maxLenCenter + maxLen + 1)

        dist = origin[maxLenCenter - maxLen + 2 : maxLenCenter + maxLen : 2]
        print(dist)
        return dist

相关文章

网友评论

      本文标题:LeetCode 5. Longest Palindromic

      本文链接:https://www.haomeiwen.com/subject/itqrfqtx.html