728x90
반응형
leetcode.com/problems/valid-palindrome/
안녕하세요 후르륵짭짭 입니다.
요즘에는 알고리즘만 포스팅 하고 있는데,,, 그럴만한 사정이 있어서 ㅠㅠ
문제는 진짜 간단하고 쉽습니다.
** 문제 내용 **
alphanumeric = 영숫자 만 고려해서 이 문자가 팰린드롬인지 확인 하는 문제 입니다.
** 해결 방법 **
저는 저번에 공부 했던 정규식을 이용해서 풀었습니다.
class Solution {
func returnStringByRex(pattern : String , word : String) -> [String] {
do {
let regex = try NSRegularExpression(pattern: pattern, options: .caseInsensitive)
let result = regex.matches(in: word, options: [], range: NSRange(location: 0, length: word.count))
let rexStrings = result.map { (element) -> String in
let range = Range(element.range, in: word)!
return String(word[range])
}
return rexStrings
} catch let error {
print(error.localizedDescription)
}
return []
}
func isPalindrome(_ s: String) -> Bool {
let validString = returnStringByRex(pattern: "[a-z0-9]+", word: s.lowercased()).joined().map { (char) -> String in
return String(char)
}
print(validString)
var start = 0
var end = validString.count - 1
while start < end {
if validString[start] != validString[end] {
return false
}
start += 1
end -= 1
}
return true
}
}
이렇게 해서 저번에도 팰린드롬을 해서 빨리 풀 수 있었습니다.
이렇개 해서 풀었는데, 이번에는 다른 사람의 코드를 보도록 하겠습니다.
** 다른 사람의 코드 **
class Solution {
func isPalindrome(_ s: String) -> Bool {
var i = 0, j = s.count - 1
let arr = Array(s.lowercased())
while i < j {
while i < j && !arr[i].isAlphaNumeric {
i += 1
}
while i < j && !arr[j].isAlphaNumeric {
j -= 1
}
guard arr[i] == arr[j] else {
return false
}
i += 1
j -= 1
}
return true
}
}
extension Character {
var isAlphaNumeric: Bool {
return isLetter || isNumber
}
}
여기서 새롭게 알게 된 사실은 Chatacter 형은 이 문자가
문자인지 (isLetter) / 숫자인지 (isNumber) / 아스키코드인지 (isASCII) 등
여러가지를 확인 할 수 있습니다!
728x90
반응형
'Xcode > Swift - Algorithm' 카테고리의 다른 글
Swift) 프로그래머스(Lv2) - 소수 찾기 (Brut-Force) (0) | 2020.08.30 |
---|---|
Swift) HyunDaiCard - Quez1 (String) (0) | 2020.08.30 |
Swift ) 프로그래머스(Lv2) - 문자열 압축 (String) (0) | 2020.08.28 |
Swift) LeetCode(Easy) - Valid Palindrome II (String) (0) | 2020.08.27 |
Swift ) 프로그래머스(Lv1) - [1차] 다트 게임 (RegularExpression&Split) (0) | 2020.08.27 |
댓글