[Swift]プログラマー(Lv 1)-新しいアイデンティティを推奨[2021 KAKAKAO BLIND RECRUIMENT]
こんにちは!
https://programmers.co.kr/learn/courses/30/lessons/72410
SWIFTで解きたいから.注意すべき点がたくさんあります!😅
SWIFTの
https://programmers.co.kr/learn/courses/30/lessons/72410
import Foundation
func solution(_ new_id:String) -> String {
// 1단계
var str = new_id.lowercased()
// 2단계
var chars = CharacterSet.lowercaseLetters
chars.formUnion(CharacterSet.decimalDigits)
chars.insert(charactersIn: "-_.")
let notAllowed = chars.inverted
str = str.components(separatedBy: notAllowed).joined()
// 3단계
while str.contains("..") {
str = str.replacingOccurrences(of: "..", with: ".")
}
// 4단계
str = str.trimmingCharacters(in: ["."])
// 5단계
if str.count == 0 {
str = "a"
}
// 6단계
if str.count >= 16 {
let start = str.startIndex
let end = str.index(str.startIndex, offsetBy: 15)
let range = start..<end
str = String(str[range])
str = str.trimmingCharacters(in: ["."])
}
// 7단계
if str.count <= 2 {
let endIndex = str.index(before: str.endIndex)
let add = String(str[endIndex])
while str.count != 3 {
str += add
}
}
return str
}
この問題...7段階はそのまま実施すれば良いのですが、難しい問題ではありませんが…SWIFTで解きたいから.注意すべき点がたくさんあります!😅
SWIFTの
CharacterSet
で許可されている文字(小文字、数字、「-.」)を使います.chars(グラフセット)を作成し、inverted
を使用して許可されていない文字セット(notAllowed)を作成してフィルタします.str.components(separatedBy: oks).joined()
そしてtrimmingCharacters
、前後」です.削除に成功しました.trimmingCharactersは両端文字を消去する方法です.Reference
この問題について([Swift]プログラマー(Lv 1)-新しいアイデンティティを推奨[2021 KAKAKAO BLIND RECRUIMENT]), 我々は、より多くの情報をここで見つけました https://velog.io/@kerri/Swift-프로그래머스Lv1-신규-아이디-추천-2021-KAKAO-BLIND-RECRUITMENTテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol