966. Vowel Spellchecker | LeetCode Daily Question | Swift

vc7-avatar-img
發佈於LeetCode
更新 發佈閱讀 3 分鐘

題目

https://leetcode.com/problems/vowel-spellchecker

日期

2024/9/14

程式碼

class Solution {
func spellchecker(_ wordlist: [String], _ queries: [String]) -> [String] {
// == 建立三個 HashMaps ==
// 利用建立 HashMap ,減少需要走訪的次數

/// Case 1. 絕對相同
let wordSet = Set(wordlist)

/// Case 2. 建立 index mapping ,只保留第一次出現的詞
let wordCapitalized = wordlist
.reduce(into: [String: String]()) { result, word in
let lowercasedWord = word.lowercased()
result[lowercasedWord] = result[lowercasedWord] ?? word
}

/// 3. 正規化母音,只保留第一次出現的詞
let wordDevoweled = wordlist
.reduce(into: [String: String]()) { result, word in
let devoeledWord = devowel(word)
result[devoeledWord] = result[devoeledWord] ?? word
}

// == 開始比對 ==

return queries.map { query in
wordSet.contains(query) ? query : // Case 1.
wordCapitalized[query.lowercased()] // Case 2.
?? wordDevoweled[devowel(query)] // Case 3.
?? ""
}

}

/// 利用正規表示式把母音​改成 *
func devowel(_ word: String) -> String {
word.lowercased().replacing(/[aeiou]/, with: "*")
}
}



留言
avatar-img
留言分享你的想法!
avatar-img
萱寫寫
2會員
16內容數
讀書心得、活動參加心得