반응형
#Problem
Given a string s, return the longest palindromic substring in s.
Example 1: Constraints:
|
# My Answer
Time Limit Exceeded
class Solution:
def longestPalindrome(self, s: str) -> str:
pmax=s
len_max = len(pmax)
if s==s[::-1]:
return s
else:
while(len_max!=0):
len_max-=1 # substring의 길이를 줄여가면서 팰린드롬인지 확인하기
for i in range(len(s)-len_max+1):
if s[i:i+len_max]==''.join(list(reversed(s[i:i+len_max]))):
pmax = s[i:i+len_max]
return pmax
# Solution
class Solution:
def longestPalindrome(self, s: str) -> str:
# 팰린드롬 판별 및 투 포인터 확장
# expand 함수는 중심에서 양쪽으로 계속 뻗어나간다.
def expand(left: int, right: int) -> str:
while left >= 0 and right < len(s) and s[left] == s[right]:
left -= 1
right += 1
return s[left + 1:right]
# 해당 사항이 없을때 빠르게 리턴
if len(s) < 2 or s == s[::-1]:
return s
result = ''
# 슬라이딩 윈도우 우측으로 이동
for i in range(len(s) - 1):
result = max(result,
expand(i, i + 1), # expand(i,i+1) 길이가 짝수인 팰린드롬 찾기
expand(i, i + 2), # expannd(i,i+2) 길이가 홀수인 팰린드롬 찾기
key=len)
return result
반응형
'Algorithm > LEET CODE ( 파이썬 알고리즘 인터뷰)' 카테고리의 다른 글
[LEET CODE] 42. Trapping Rain Water (0) | 2021.03.20 |
---|---|
[LEET CODE] 1. Two Sum (0) | 2021.03.19 |
[LEET CODE] 49. Group Anagrams (dict 자료형, sort(), sorted()) (0) | 2021.03.15 |
[LEET CODE] 819. Most Common Word ( 정규표현식 ) (0) | 2021.03.15 |
[LEET CODE] 937. Reorder Data in Log Files ( lambda 함수, 문자열 확인 함수 ) (0) | 2021.03.14 |