[leetCode]ValiePalindrome 유효한 펠린드룸

ManduTheCat·2022년 5월 10일
0

알고리즘

목록 보기
1/6
post-thumbnail

문제

Valid Palindrome
A phrase is a palindrome if, after converting all uppercase letters into lowercase letters and removing all non-alphanumeric characters, it reads the same forward and backward. Alphanumeric characters include letters and numbers.

Given a string s, return true if it is a palindrome, or false otherwise.


Example 1:

Input: s = "A man, a plan, a canal: Panama"
Output: true
Explanation: "amanaplanacanalpanama" is a palindrome.


Constraints:

1 <= s.length <= 2 * 105
s consists only of printable ASCII characters.


문제의 내용은 대문자 등 소문자등 상관없이
앞으로 읽든 뒤로 읽든 같으면 true 틀리면 false 를 출력하는 함수를 만들라는것이다. 단 입력은 길이 2*105 만큼 아스키 문자 어떤것이든 온다

풀이

  1. 입력이 어떠한 문자열이든지 가능하고 대문자 소문자 구분 없으니 특수문자를 거르고 소문자로 양식을 통일 or 대문자로 양식 통일 해야한다
  • 대문자 소문자 char.lower() 활용
  • 문자 판독 char.isalnum() 활용
  1. 앞뒤로 읽었을을때 같은걸 검사해야하는데 이건 루프를 돌며 하는 방법도 있지만 덱 자료구조를 활용하는 방법이 있다 나는 덱을 활용하였다
  • 큐 deque 활용

코드

from collections import deque
class Solution:
    def isPalindrome(self, s: str) -> bool:
        char_que = deque()
        for el in s:
            if el.isalnum():
                char_que.append(el.lower())

        len_que = len(char_que)
        for _ in range(len_que//2):
            if char_que.pop() != char_que.popleft():
                return False
        return True
profile
알고리즘, SpringBoot, Java, DataBase

0개의 댓글