leetcodeSolution to some Leetcode problems written in C++ | 
          
| git clone git://git.dimitrijedobrota.com/leetcode.git | 
| Log | Files | Refs | README | LICENSE | 
0966.cpp (1164B)
    0 class Solution {
              1     static bool isvowel(const char c) { return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'; }
          
              3     static string devow(string word) {
              4         for (char &c : word)
              5             if (isvowel(c)) c = '_';
              6         return word;
              7     }
          
              9     static string tolower(string word) {
             10         for (char &c : word)
             11             c = std::tolower(c);
             12         return word;
             13     }
          
             15   public:
             16     vector<string> spellchecker(const vector<string> &wordlist, vector<string> &queries) const {
             17         unordered_set<string> words(begin(wordlist), end(wordlist));
             18         unordered_map<string, string> caps, vows;
          
             20         for (const auto &word : wordlist) {
             21             const string low = tolower(word);
             22             caps.emplace(low, word);
             23             vows.emplace(devow(low), word);
             24         }
          
             26         for (auto &word : queries) {
             27             if (words.count(word)) continue;
             28             const string low = tolower(word);
          
             30             const auto it = caps.find(low);
             31             if (it != caps.end()) {
             32                 word = it->second;
             33                 continue;
             34             }
          
             36             word = vows[devow(low)];
             37         }
          
             39         return queries;
             40     }
             41 };