大型电子商务网站建设成本,建设部网站施工合同,企业网络营销策划必须以什么为核心,淘宝推广工具1. 题目
在给定单词列表 wordlist 的情况下#xff0c;我们希望实现一个拼写检查器#xff0c;将查询单词转换为正确的单词。
对于给定的查询单词 query#xff0c;拼写检查器将会处理两类拼写错误#xff1a;
大小写#xff1a;如果查询匹配单词列表中的某个单词…1. 题目
在给定单词列表 wordlist 的情况下我们希望实现一个拼写检查器将查询单词转换为正确的单词。
对于给定的查询单词 query拼写检查器将会处理两类拼写错误
大小写如果查询匹配单词列表中的某个单词不区分大小写则返回的正确单词与单词列表中的大小写相同。
例如wordlist [yellow], query YellOw: correct yellow
例如wordlist [Yellow], query yellow: correct Yellow
例如wordlist [yellow], query yellow: correct yellow元音错误如果在将查询单词中的元音‘a’、‘e’、‘i’、‘o’、‘u’分别替换为任何元音后能与单词列表中的单词匹配不区分大小写则返回的正确单词与单词列表中的匹配项大小写相同。
例如wordlist [YellOw], query yollow: correct YellOw
例如wordlist [YellOw], query yeellow: correct 无匹配项
例如wordlist [YellOw], query yllw: correct 无匹配项此外拼写检查器还按照以下优先级规则操作
当查询完全匹配单词列表中的某个单词区分大小写时应返回相同的单词。当查询匹配到大小写问题的单词时您应该返回单词列表中的第一个这样的匹配项。当查询匹配到元音错误的单词时您应该返回单词列表中的第一个这样的匹配项。如果该查询在单词列表中没有匹配项则应返回空字符串。
给出一些查询 queries返回一个单词列表 answer其中 answer[i] 是由查询 query queries[i] 得到的正确单词。
示例
输入wordlist [KiTe,kite,hare,Hare], queries [kite,Kite,KiTe,Hare,HARE,Hear,hear,keti,keet,keto]
输出[kite,KiTe,KiTe,Hare,hare,,,KiTe,,KiTe]提示
1 wordlist.length 5000
1 queries.length 5000
1 wordlist[i].length 7
1 queries[i].length 7
wordlist 和 queries 中的所有字符串仅由英文字母组成。来源力扣LeetCode 链接https://leetcode-cn.com/problems/vowel-spellchecker 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
class Solution { //C
public:vectorstring spellchecker(vectorstring wordlist, vectorstring queries) {// 元音集合unordered_setchar vowel {a,e,i,o,u};// 原始单词集合unordered_setstring words(wordlist.begin(), wordlist.end());//转成小写后的单词 ---- 第一个出现的原始词unordered_mapstring,string upper_lower;//转小写且元音标为* ----- 第一个出现的原始词unordered_mapstring,string vowel_mask;string s1, s2;int i 0, idx 0;for(auto w : wordlist){words.insert(w);s1 s2 w;for(i 0; i w.size(); i){if(isupper(s1[i])){s1[i] 32;//转小写s2[i] 32;}if(vowel.count(s2[i]))s2[i]*;}if(!upper_lower.count(s1))upper_lower[s1] w;if(!vowel_mask.count(s2))vowel_mask[s2] w;}vectorstring ans(queries.size(),);for(auto q : queries){if(words.count(q))ans[idx] q;else{s1 s2 q;for(i 0; i q.size(); i){if(isupper(s1[i])){s1[i] 32;//转小写s2[i] 32;}if(vowel.count(s2[i]))s2[i]*;}if(upper_lower.count(s1))ans[idx] upper_lower[s1];else if(vowel_mask.count(s2))ans[idx] vowel_mask[s2];}idx;}return ans;}
};144 ms 29.1 MB