九章算法培训

第一节

最长回文子串

给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你可以假定只有一个满足条件的最长回文串。

样例

给出字符串 "abcdzdcab",它的最长回文子串为 "cdzdc"

挑战

O(n2) 时间复杂度的算法是可以接受的,如果你能用 O(n) 的算法那自然更好。

我的n^2代码:

class Solution:
    """
    @param s: input string
    @return: the longest palindromic substring
    """
    def longestPalindrome(self, s):
        # write your code here
        start, end = 0, 0
        for i in range(0, len(s)):
            for j in range(i, len(s)):
                if (j-i)>(end-start) and self.isPalind(s, i, j):
                    start, end = i, j
        return s[start:end+1]
    
    def isPalind(self, s, i, j):
        while i<j:
            if s[i] != s[j]:
                return False
            i += 1
            j -= 1
        return True

猜你喜欢

转载自www.cnblogs.com/bonelee/p/10258863.html