가장 긴 Palindromic Substring을 반환하는 문제이다.
물로 일일이 탐색하는 brute force 방식이 있으나
n*n2 = o(n3) 의 시간복잡도가 걸린다.
또 다른 방법으로는 중간을 기점으로 양옆(왼,오)가 같은지 탐색하는 방법이 있다.
n*n => O(n2)의 시간이 걸린다
class Solution:
def longestPalindrome(self, s: str) -> str:
res = ""
reslen = 0
for i in range(len(s)):
#개수가 홀수일 떄
l, r= i,i
while l>=0 and r<len(s) and s[l] == s[r]:
if (r-l+1)> reslen :
res = s[l:r+1]
reslen = r-l+1
l -=1
r +=1
#짝수일때
l, r = i, i+1
while l>=0 and r<len(s) and s[l] == s[r]:
if (r-l+1)> reslen :
res = s[l:r+1]
reslen = r-l+1
l -=1
r +=1
return res