https://leetcode.com/problems/longest-palindromic-substring/
가장 긴 팰린드롬 부분 문자열을 출력하라.
개인적으로 상당히 까다로웠다고 생각되었던 문제이다.
이 문제로 투포인터, 슬라이딩 윈도우, 조건부 max() 함수에 대해서 정확히 이해할 수 있게 되어서 포스팅에 올리겠다.
이 문제의 핵심 포인트는 슬라이딩 윈도우하는 투포인터를 각각 함수를 통해 결과값을 도출한뒤 max()함수로 조건을 길이로 제시해 값을 얻어내는 부분이다.
class Solution:
def longestPalindrome(self, s: str) -> str:
def check(word,start,end):
if start<0 or end>len(word):
return ''
s=word[start:end]
if s==s[::-1]:
while True:
start-=1
end+=1
s=word[start:end]
if start<0 or end>len(word) or s!=s[::-1]:
start+=1
end-=1
break
else:
continue
else:
return ''
return word[start:end]
res=s[0]
if len(s)<2 or s==s[::-1]:
return s
else:
for i in range(len(s)):
res=(max(check(s,i,i+3),check(s,i,i+2),res,key=len))
return res
'알고리즘' 카테고리의 다른 글
파이썬 sort함수 key 기술 (0) | 2022.05.10 |
---|---|
문자열을 숫자 리스트로 각 자리마다 분해하기 (0) | 2022.05.02 |
7. 애너그램 (Defaultdict, join 활용, 파이썬 내장 정렬함수,sorted,sort) (0) | 2021.08.16 |
6. 문자열 관리(re 모듈을 통한 전처리) (0) | 2021.08.16 |
5. 문자열 관리(특정한 기준으로 정렬하기) (0) | 2021.08.16 |