題目
日期
2025/9/15
解法 1
- 把字串根據空格分割成陣列
- 用正規表達式判斷有沒有出現,沒有出現則可以 +1
class Solution {
func canBeTypedWords(_ text: String, _ brokenLetters: String) -> Int {
let group = text.split(separator: " ")
guard !brokenLetters.isEmpty else { return group.count }
guard let regex = try? Regex("[\(brokenLetters)]") else { return 0 }
return group.reduce(into: 0) { result, string in
result += string.contains(regex) ? 0 : 1
}
}
}
缺點
慢,看起來做了許多不必要的處理
解法 2
(檢討)
參考 iamhands0me 的解法後,發現可以不用用到正規表達式。寫法就可以更單純好懂。轉型成 Set 後還能用 isDisjoint 判定有沒有出現。
程式碼
class Solution {
func canBeTypedWords(_ text: String, _ brokenLetters: String) -> Int {
text
.split(separator: " ")
.count { [brokenSet = Set(brokenLetters)] word in
brokenSet.isDisjoint(with: word)
}
}
}










