Computer Science/Algorithm

leetcode 5.Longest Palindromic Substring

suleesulee 2021. 2. 24. 00:09

난이도    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

 

 

문자열의 처음부터 하나씩 잡고 양 옆으로 넓혀가며 회문인지 알아보는 구조로 

회문이 아닌 경우 여지껏 찾은 회문을 리턴해 줌

문자열의 처음 인덱스부터

글자수가 짝수, 홀수일 경우에 대해 다 고려해서 현재 결과 값과 비교해서 가장 긴 회문을 리턴함