난이도 Medium
사용언어 python3
나의 풀이는BruteForce라고 생각됨
주어지는 문자열에서 가장 긴 회문을 찾는 문제
구조를 잘 세우면 잘해보면 아주 쉽게 풀리는 문제인데 처음에 어떻게 찾아야하나 헤매다 답을 보고 깨달아 풀은문제
class Solution:
def longestPalindrome(self, s: str) -> str:
res = ""
for i in range(len(s)):
odd = self.palinSearch(s, i, i) //문자열의 글자가 홀수일 경우
even = self.palinSearch(s, i, i+1) //문자열의 글자가 짝수일 경우
res = max(odd, even, res, key=len) //max의 key 관련해서 몰랐다가 검색을 통해 알아냄
return res
def palinSearch(self, s, l, r) :
while 0<=l and r<len(s) and s[l] == s[r] :
l -= 1
r += 1
return s[l+1:r] //l이 -1일경우가 있어서 l+1
문자열의 처음부터 하나씩 잡고 양 옆으로 넓혀가며 회문인지 알아보는 구조로
회문이 아닌 경우 여지껏 찾은 회문을 리턴해 줌
문자열의 처음 인덱스부터
글자수가 짝수, 홀수일 경우에 대해 다 고려해서 현재 결과 값과 비교해서 가장 긴 회문을 리턴함
'Computer Science > Algorithm' 카테고리의 다른 글
[리트코드]1002. Find Common Characters (0) | 2021.09.06 |
---|---|
[리트코드]740. Delete and Earn (0) | 2021.09.03 |
[리트코드]18. 4Sum (0) | 2021.09.03 |
[리트코드]16. 3Sum Closest (0) | 2021.09.03 |
[리트코드]1762. Buildings With an Ocean View (0) | 2021.09.02 |