지난 번 포스팅까지 프로그래머스에 있는 문제를 풀어보았는데요. 이번 포스팅 부터는 리트코드의 문제들을 풀어보도록 하겠습니다.
아주 간단한 유형의 문제입니다. 다만 주어진 문자열을 바로 뒤집어서 비교하면 안되고 약간에 가공을 거쳐야 합니다. 일단 빈 문자열 “ ”을 제거해야 합니다. 그리고 알파벳과 숫자가 아닌 것을 제거합니다. 마지막으로 대소문자를 가리지 않으므로 모두 소문자로 바꿉니다. 그리고 나서 문자열을 뒤집어서 비교하면 됩니다.
그냥 문자열에서 위 작업들을 진행하면 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() // 뒤집어서 동일한지 비교
}
}