매일 매일 성장하는 섭섭군

[Leet Coding Challenge] Valid Palindrome, 2020.08.01~07 본문

알고리즘 문제풀이/LeetCode

[Leet Coding Challenge] Valid Palindrome, 2020.08.01~07

섭섭군 2020. 8. 4. 18:38
반응형

 

오늘의 문제는 Valid Palindrome 이라는 문제다. 즉, 필렌드롬이 맞는지 확인하는 문제다. 문제는 다음과 같다. 

leetcode.com/explore/challenge/card/august-leetcoding-challenge/549/week-1-august-1st-august-7th/3411/

 

Explore - LeetCode

LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore.

leetcode.com

 

Palindrome이란? 

 

Palindrome은 앞으로 읽으나 뒤로 읽으나 똑같은 문자열을 말한다. 

예를 들어보자면 "토마토", "ABCBA", "123321"같은 문자열이 Palindrome 문자열이다. 

 

이제 문제를 풀어보자!

 

주어진 문자열은 알파벳, 숫자, 띄어쓰기, 특수문자 등 여러가지가 포함된다.

문제의 조건에 알파벳과 숫자만 판단한다고 한다. Example1이 True인것을 보니 대소문자는 같은 알파벳으로 본다.

즉 "A$% B# *(#a" 이것은 Palindrome이다. 특수문자와 띄어쓰기를 제거하면 "aba"가 되기 때문이다. 

-> 이렇게 문자열을 잘 가공만 해주면 문제는 쉽다. 뒤집어서 같은지만 확인하면 된다. 

 

전체 코드는 다음과 같습니다. 질문과 피드백은 언제나 감사드립니다.

class Solution:
    def isPalindrome(self, s: str) -> bool:
        result = ''
        s = s.lower()
        for i in s :
            if (i >= "a" and i <= "z") or (i >= "0" and i <= "9") :
                result += i
        if result == result[::-1] :
            return True
        else :
            return False

 

 

반응형
Comments