LeetCode 5. Longest Palindromic

2018-11-13  本文已影响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

上一篇 下一篇

猜你喜欢

热点阅读