🔗 Problem Link

 

Longest Palindrome - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com


❔Thinking

  • 주어진 문자열의 문자들로 만들 수 있는 가장 긴 '펠린드롬 문자열'의 길이를 출력한다.
  • '펠린드롬 문자열'은 가운데를 기준으로 좌우를 뒤집어도 동일한 문자열을 말한다.
  • 모든 문자를 사용하지 않아도 된다.

💻Solution

from collections import Counter
class Solution:
    def longestPalindrome(self, s: str) -> int:
        s_letter_cnt = Counter(s).values()
        palindrom_cnt, flag = 0, False
        for cnt in s_letter_cnt:
            if cnt % 2 == 0:
                palindrom_cnt += cnt
            else:
                flag = True
                palindrom_cnt += cnt-1
        return palindrom_cnt if flag is False else palindrom_cnt+1

🗝️keypoint

  1. 모든 문자를 사용한다면, 짝수개의 알파벳은 다 더하고 홀수개의 알파벳 중 가장 긴 알파벳만 더한다. 
  2. flag를 사용하여 특정 조건의 발생 여부를 판단할 수 있다.
  3. Counter(문자열)은 각 문자를 key로 하고 그 개수를 value로 하는 dictionary를 반환한다. (단, type은 counter이다)

+ Recent posts