[TIL_Carrotww] 85 - 23/01/11

μœ ν˜•μ„Β·2023λ…„ 1μ›” 11일
0

TIL

λͺ©λ‘ 보기
100/138
post-thumbnail

πŸ“Carrotww의 μ½”λ”© 기둝μž₯

🧲 python algorithm

πŸ” Leetcode5_palindrome
이것도 μ˜ˆμ „μ— ν’€μ—ˆλ˜κ±΄λ° ν’€λ©΄μ„œ 기얡이 났닀
κ·Έλž˜μ„œ μ²˜μŒμ—λŠ” κ·Έλƒ₯ 브루트 포슀둜 ν’€λ©΄μ„œ μ•„λ‹Œκ±Έ μ•Œμ•˜μ§€λ§Œ κ·Έλž˜λ„ μ‹œλ„ν•΄λ³Έκ±° κ·ΈλŒ€λ‘œ μ‹œλ„ν–ˆλ‹€.

  • 처음 μ‹œλ„
class Solution:
    def longestPalindrome(self, s: str) -> str:
        # palindromic 인지 ν™•μΈν•˜λŠ” ν•¨μˆ˜
        def checkpalin(word):
            if len(word) == 1:
                return True

            center_index = len(word) // 2
            if len(word) % 2 == 0:
                if word[:center_index] == ''.join(list(reversed(word[center_index:]))):
                    return True
            else:
                if word[:center_index] == ''.join(list(reversed(word[center_index+1:]))):
                    return True
            return False

        result = ''

        for i in range(len(s)):
            for x in range(len(s), i-1, -1):
                if checkpalin(s[i:x]):
                    result = max(result, s[i:x], key=lambda x: len(x))
                    continue

        return result

ν•˜λ‚˜μ”© ν™•μΈν•˜λ©΄μ„œ λ¬Έμžμ—΄μ„ λŒλ„λ‘ μž‘μ„±ν•œ μ•Œκ³ λ¦¬μ¦˜μ΄λ‹€
μ—­μ‹œ μ‹œκ°„μ΄ˆκ³Όκ°€ λ‚œλ‹€.

  • 두 번째 풀이 - μŠ¬λΌμ΄λ”© μœˆλ„μš°
class Solution:
    def longestPalindrome(self, s: str) -> str:
        def expand(left, right):
            while left >= 0 and right < len(s) and s[left] == s[right]:
                left -= 1
                right += 1
            return s[left+1:right]

        if len(s) == 1 or s == s[::-1]:
            return s

        result = ''
        for i in range(len(s) - 1):
            result = max(result, expand(i, i+1), expand(i, i+2), key=lambda x:len(x))

        return result

더 ν’€μ–΄μ•Όν•˜λŠ”λ°...
λͺΈμ΄ μ•ˆμ’‹μ•„μ„œ κ·ΈλŸ¬μ§€ λͺ»ν–ˆλ‹€...γ… 

profile
Carrot_hyeong

0개의 λŒ“κΈ€