s4553711
10/6/2017 - 2:46 PM

500.cpp

class Solution {
public:
    vector<string> findWords(vector<string>& words) {
        unordered_set<char> set1 = {'q','w','e','r','t','y','u','i','o','p'};  
        unordered_set<char> set2 = {'s','d','f','g','h','j','k','l','a'};  
        unordered_set<char> set3 = {'z','x','c','v','b','n','m'};  
        vector<unordered_set<char>> sets = {set1, set2, set3};  
        vector<string> result;      
        
        for (int i = 0; i < words.size(); i++){
            string lower = words[i];
            transform(lower.begin(),lower.end(),lower.begin(), ::tolower);
            
            int index = 0;
            if (set1.find(lower[0]) != set1.end()) {
                index = 0;
            } else if (set2.find(lower[0]) != set2.end()) {
                index = 1;
            } else if (set3.find(lower[0]) != set3.end()) {
                index = 2;
            }
            
            unordered_set<char> tmpStr = sets[index];
            int flag = 0;
            for(char c: lower) {
                if (tmpStr.find(c) == tmpStr.end()) {
                    flag = 1;
                    break;
                }
            }
            if (!flag) {
                result.push_back(words[i]);
            }
        }
        return result;
    }
};