티스토리 뷰

728x90

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

 

 

주어진 문장(s)을 소문자로 바꾼후, 영문/숫자가 아닌걸 제거하고,

주어진 문장과 거꾸로 읽어도 똑같다면 true를 리턴, 다르다면 false를 리턴

 

 

내 풀이

class Solution {
    func isPalindrome(_ s: String) -> Bool {
        let convertedStr = s
            .lowercased()
            .filter { $0.isNumber || $0.isLetter }
        
        let reversedStr = String(convertedStr.reversed())
        
        return convertedStr == reversedStr ? true : false
        
    }
}

 

  • 소문자로 바꿔주는 메서드 lowercased() 사용
  • 영문/숫자만 걸러내기 위해 filter, isNumber, isLetter 사용
  • 변형된 String을 뒤집기 위해 reversed() 사용 및 String으로 타입 변형

 

 

다른사람의 풀이

class Solution {
    func isPalindrome(_ s: String) -> Bool {        
    
        guard !s.isEmpty else { return true }
    
        let str = s.filter { $0.isNumber || $0.isLetter }.lowercased()
    
        return str == String(str.reversed())
    }
}

 

비슷한것 같지만 첫줄에 예외처리도 미리해줌으로써 시간제한 부분에서 더 빨리 연산이 됨.

728x90