[leetcode] 966. Vowel Spellchecker

网友投稿 657 2022-11-08

[leetcode] 966. Vowel Spellchecker

[leetcode] 966. Vowel Spellchecker

Description

Given a wordlist, we want to implement a spellchecker that converts a query word into a correct word.

For a given query word, the spell checker handles two categories of spelling mistakes:

Capitalization: If the query matches a word in the wordlist (case-insensitive), then the query word is returned with the same case as the case in the wordlist.

Example: wordlist = [“yellow”], query = “YellOw”: correct = “yellow”Example: wordlist = [“Yellow”], query = “yellow”: correct = “Yellow”Example: wordlist = [“yellow”], query = “yellow”: correct = “yellow”

Vowel Errors: If after replacing the vowels (‘a’, ‘e’, ‘i’, ‘o’, ‘u’) of the query word with any vowel individually, it matches a word in the wordlist (case-insensitive), then the query word is returned with the same case as the match in the wordlist.

Example: wordlist = [“YellOw”], query = “yollow”: correct = “YellOw”Example: wordlist = [“YellOw”], query = “yeellow”: correct = “” (no match)Example: wordlist = [“YellOw”], query = “yllw”: correct = “” (no match)In addition, the spell checker operates under the following precedence rules:

When the query exactly matches a word in the wordlist (case-sensitive), you should return the same word back.When the query matches a word up to capitlization, you should return the first such match in the wordlist.When the query matches a word up to vowel errors, you should return the first such match in the wordlist.If the query has no matches in the wordlist, you should return the empty string.

Given some queries, return a list of words answer, where answer[i] is the correct word for query = queries[i].

Example 1:

Input: wordlist = ["KiTe","kite","hare","Hare"], queries = ["kite","Kite","KiTe","Hare","HARE","Hear","hear","keti","keet","keto"]Output: ["kite","KiTe","KiTe","Hare","hare","","","KiTe","","KiTe"]

Note:

1 <= wordlist.length <= 50001 <= queries.length <= 50001 <= wordlist[i].length <= 71 <= queries[i].length <= 7All strings in wordlist and queries consist only of english letters.

分析

题目的意思是:这道题做的是一个拼写检查器,分为了完全匹配,大小写忽略匹配,元音字母忽略匹配三种。我说一下答案的思路,大概用了三个字典,第一个事完全匹配,第二个事大小写忽略的匹配,第三个事元音字母忽略匹配。然后遍历query,来按照顺序匹配这三个字典,能匹配上则返回相应字典的值,否则返回空字符串就行了。

代码

class Solution: def devowel(self,word): t='' for ch in word: if(ch in 'aeiou'): t+='*' else: t+=ch return t def spellchecker(self, wordlist: List[str], queries: List[str]) -> List[str]: words_perfect=set(wordlist) words_cap={} words_vow={} for word in wordlist: t=word.lower() words_cap.setdefault(t,word) words_vow.setdefault(self.devowel(t),word) res=[] for query in queries: if(query in words_perfect): res.append(query) continue query=query.lower() if(query in words_cap): res.append(words_cap[query]) continue query=self.devowel(query) if(query in words_vow): res.append(words_vow[query]) continue res.append('') return res

参考文献

​​[LeetCode] solution​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于OpenCV与JVM实现矩阵处理图像
下一篇:[leetcode] 1071. Greatest Common Divisor of Strings
相关文章

 发表评论

暂时没有评论,来抢沙发吧~