leetcode#125 Valid Palindrome

정은경·2022년 6월 12일
0

알고리즘

목록 보기
80/125

1. 문제

2. 나의 풀이

  • 문자의 길이가 20만이라서 O(n) 복잡도로 풀어도 괜찮다고 판단
  • 문자열을 소문자로 변경하고, 문자/숫자가 아닌 것은 제거
    * 소문자는 아스키 48번부터 57번까지
    • 숫자는 아스키 97번부터 122번까지임
  • A와 B를 비교해서 다르면 false
    * A는 문자열 시작에서 0번째 문자
    • B는 문자열의 끝에서 -0번째 문자
  • 문자열의 중간까지 계속해서 비교하고 다른 경우가 없으면 true를 리턴
class Solution(object):
    def getRefineCharacters(self, s):
        lower_alphabets = [x for x in range(48, 57+1)]
        numbers = [x for x in range(97, 122+1)]
        
        return list(filter(lambda x: ord(x) in lower_alphabets or ord(x) in numbers , s.lower()))

    def isPalindrome(self, s):
        """
        :type s: str
        :rtype: bool
        """
        refinedString = self.getRefineCharacters(s)
        
        if len(refinedString) <= 1:
            return True
        
        for i in range(0, len(refinedString)//2):
            start_index = i
            end_index = len(refinedString)-i-1
            if refinedString[start_index] != refinedString[end_index]:
                return False
        return True

3. 남의 풀이

profile
#의식의흐름 #순간순간 #생각의스냅샷

0개의 댓글