第一节
最长回文子串
给出一个字符串(假设长度最长为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