유효한 팰린드롬

eunji lee·2022년 5월 15일
0

알고리즘

목록 보기
1/11

문제) 문자열이 팰린드롬인지 확인하라. 대소문자를 구분하지 않으며, 영문과 숫자만을 대상으로 한다.

풀이1) 문자열을 이용한 풀이


    def isPalindraome1(str: str) -> bool:
        strs = []
        for char in str:
            if char.isalnum():
               strs.append(char.lower())
        while len(strs) > 1:
            if strs.pop(0) != strs.pop():
                return False
        return True

    input :str ="A man, a plan, a canal: panama"
    s= Solution()

    test= isPalindraome1(input)

풀이2) 데크 자료형을 이용한 최적화

-strs의 자료형을 deque로 바꿔주는것만으로도 속도를 높일 수 있다.
리스트의 pop이 o(0)인데 반해 데크의 pop.left()는 o(1) 이기때문에
거의 5배 가까이 성능차이가 난다.

풀이3) 슬라이싱 사용

-정규표현식으로 필터링, 리턴된 문자열 리스트와 문자열 리스트를 슬라이싱으로 뒤집어 비교 2번과 비교해 2배정도 차이가 남

profile
안녕하세요! 이은지 입니다.

0개의 댓글