Longest Palindromic Substring
Description:
Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.
Example
Given the string = “abcdzdcab”, return “cdzdc”.
Challenge
O(n2) time is acceptable. Can you do it in O(n) time.
Code:
class Solution:
"""
@param s: input string
@return: the longest palindromic substring
"""
def longestPalindrome(self, s):
# write your code here
res = ""
resLength = 0
for i in range(len(s)):
rest = s[i]
j = 1
while i-j>=0 and i+j<len(s):
if s[i-j]==s[i+j]:
rest = s[i-j]+rest+s[i+j]
j += 1
else:
break
if len(rest)>resLength:
res = rest
resLength = len(res)
for i in range(len(s)-1):
if s[i]!=s[i+1]:
continue
rest = s[i]+s[i+1]
j = 1
while i-j>=0 and i+j+1<len(s):
if s[i-j]==s[i+j+1]:
rest = s[i-j]+rest+s[i+j+1]
j += 1
else:
break
if len(rest)>resLength:
res = rest
resLength = len(res)
return res