class Solution(object):
def longestPalindrome(self, s):
"""
:type s: str
:rtype: str
"""
# main idea: start from the middle to extend toward two sides. Two cases need to be processed seperately :1. odd 2. even
# time O(N^2) space O(1)
size = len(s)
if not s or size == 1:
return s
res = ''
for i in range(size):
# odd
temp = self.helper(s,i,i)
if len(res)< len(temp):
res = temp
# even
temp = self.helper(s,i,i+1)
if len(res) <len(temp):
res = temp
return res
def helper(self,s,l,r):
while l>=0 and r < len(s):
if s[l]==s[r]:
r += 1
l -= 1
else:
break
return s[l+1:r]