Saltar a contenido

5. Longest Palindromic Substring

5
Longest Palindromic Substring Medium
Tags: Dynamic Programming, String, Two Pointers

Solución (Python)

class Solution(object):
    def longestPalindrome(self, s):
        length = len(s) * 2
        index_longest = offset_longest = 0
        for index in range(length):
            offset = 0
            for offset in range(1 + index % 2, min(index, length - index), 2):
                if s[(index - offset) // 2] != s[(index + offset) // 2]:
                    offset -= 2
                    break

            if offset > offset_longest:
                index_longest = index
                offset_longest = offset
        return s[(index_longest - offset_longest) // 2: (index_longest + offset_longest) // 2 + 1] 


if __name__ == "__main__":
    sol = Solution()
    print(sol.longestPalindrome("cbbd"))
    print(sol.longestPalindrome("racecar"))
    print(sol.longestPalindrome("abc"))