(Swift) LeetCode 125. Valid Palindrome

SteadySlower·2023년 9월 17일
0

Coding Test

목록 보기
283/305

지난 번 포스팅까지 프로그래머스에 있는 문제를 풀어보았는데요. 이번 포스팅 부터는 리트코드의 문제들을 풀어보도록 하겠습니다.

문제 링크

문제 풀이 아이디어

아주 간단한 유형의 문제입니다. 다만 주어진 문자열을 바로 뒤집어서 비교하면 안되고 약간에 가공을 거쳐야 합니다. 일단 빈 문자열 “ ”을 제거해야 합니다. 그리고 알파벳과 숫자가 아닌 것을 제거합니다. 마지막으로 대소문자를 가리지 않으므로 모두 소문자로 바꿉니다. 그리고 나서 문자열을 뒤집어서 비교하면 됩니다.

그냥 문자열에서 위 작업들을 진행하면 Swift에서는 굉장히 번거롭고 무거운 작업이 됩니다. 따라서 [Character]로 바꿔준 이후에 진행하도록 하겠습니다.

코드

class Solution {
    func isPalindrome(_ s: String) -> Bool {
        let s =
            s.map { $0 } // array로 변환
            .filter { $0.isLetter || $0.isNumber } // 문자와 숫자 제외 제거
            .map { $0.lowercased() } // 소문자로
        return s == s.reversed() // 뒤집어서 동일한지 비교
    }
}
profile
백과사전 보다 항해일지(혹은 표류일지)를 지향합니다.

0개의 댓글