美文网首页
leetcode 966 元音拼写检查器

leetcode 966 元音拼写检查器

作者: 奥利奥蘸墨水 | 来源:发表于2020-04-08 23:58 被阅读0次

    题目

    元音拼写检查器

    分析

    题意简单说来就是:

    • 模糊匹配大小写
    • 模糊匹配大小写的基础上,模糊匹配元音

    解法:

    • 模糊匹配大小写,那么我们就全转换成大写/小写来用hash表存
    • 模糊匹配元音,先在全部是大写/小写的基础上,把语音字母用其他符号来表示,我这里使用数字“1”

    代码

    class Solution {
    private:
        string get_upper(const string& str) {
            string res;
            for (auto & c : str) {
                if (c >= 'a' && c <= 'z') {
                    res += c - 'a' + 'A';
                } else {
                    res += c;
                }
            }
            return res;
        }
    
        string get_vowel(const string& str) {
            string res;
            for (auto & c : str) {
                if (is_vowel(c)) {
                    res += '1';
                } else {
                    res += c;
                }
            }
            return res;
        }
    
        bool is_vowel(const char& c) {
            if (c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U') {
                return true;
            }
            return false;
        }
    public:
        vector<string> spellchecker(vector<string>& wordlist, vector<string>& queries) {
            unordered_set<string> st(wordlist.begin(), wordlist.end());
    
            unordered_map<string, string> mp1;
            unordered_map<string, string> mp2;
            for (auto & word : wordlist) {
                string up_s = get_upper(word);
                string vo_s = get_vowel(up_s);
                if (!mp1.count(up_s)) {
                    mp1[up_s] = word;
                }
                if (!mp2.count(vo_s)) {
                    mp2[vo_s] = word;
                }
            }
    
            vector<string> res;
            for (auto & word : queries) {
                string up_s = get_upper(word);
                string vo_s = get_vowel(up_s);
                if (st.count(word)) {
                    res.push_back(word);
                } else if (mp1.count(up_s)) {
                    res.push_back(mp1[up_s]);
                } else if (mp2.count(vo_s)) {
                    res.push_back(mp2[vo_s]);
                } else {
                    res.push_back("");
                }
            }
    
            return res;
        }
    };
    

    相关文章

      网友评论

          本文标题:leetcode 966 元音拼写检查器

          本文链接:https://www.haomeiwen.com/subject/yuvfmhtx.html