[1스4코2파] #145. Leetcode 125. Valid Palindrome

gunny·2023년 5월 30일
0

코딩테스트

목록 보기
146/530

[1스4코2파] 1명의 스위프트 개발자와 4명의 코틀린 개발자, 2명의 파이썬 개발자코딩 테스트 서막 : 1스4코1파

Rule :

하루에 1문제씩 풀기.
한 문제당 30분씩은 고민하기.
왜 그렇게 풀었는지 공유하기.
하루라도 놓친다면 벌금은 1,000원
백준 플래티넘, 프로그래머스 4단계, 개발자 탈퇴 시 모임 탈퇴 가능

START :

[3코1파] 2023.01.04~ (145일차)
[4코1파] 2023.01.13~ (136일차)
[1스4코1파] 2023.04.12~ (47일차)
[1스4코2파] 2023.05.03 ~ (26일차)

Today :

2023.05.28 [145일차]

125. Valid Palindrome

https://leetcode.com/problems/valid-palindrome/

문제 설명

주어진 string을 reverse 했을 때 문자열이 같은지 확인하는 팰린드롬 문제이다.
같으면 True, 아니면 Fasle return 함

문제 풀이 방법

two pointer 문제 이지만.. 그냥 정규표현식으로 갈겨서 일단 풀어버린..
주어진 string에 대해서 숫자와 영문자만 남기고 다 없애고
string을 lower 소문자로 바꾼 후에
나머지 띄어쓰기를 없앤 후 인덱스로 reverse 한 값과 같은지 아닌지 확인함

내 코드

import re

class Solution:
    def isPalindrome(self, s: str) -> bool:
        s = re.sub(r"[^0-9a-zA-Z]","",s)
        s= s.lower()
        return s.replace(' ','')==s.replace(' ','')[::-1]

증빙

여담

그 외에 주어진 s를 다 훑으면서 newString을 만들어서 비교하는 방법도 있음
isalnum() => 문자열이 영어, 한글 혹은 숫자로 되어있으면 True, 아니면 False 함수 사용

class Solution:
    def isPalindrome(self, s: str) -> bool:
        newStr = ""
        for string in s:
            if string.isalnum():
                newStr += string.lower()
        return newStr == newStr[::-1]
profile
꿈꾸는 것도 개발처럼 깊게

0개의 댓글