500. Keyboard Row

Given a List of words, return the words that can be typed using letters of alphabet on only one row's of American keyboard like the image below.

Example 1:

Input: ["Hello", "Alaska", "Dad", "Peace"] Output: ["Alaska", "Dad"]

class Solution {
public:
    vector<string> findWords(vector<string>& words) {
        vector<string> res;
        if(words.size() == 0)
            return res;
    
        unordered_set<char> row1 = { 'q','w','e','r','t','y','u','i','o','p' };
        unordered_set<char> row2 = { 'a','s','d','f','g','h','j','k','l' };
        unordered_set<char> row3 = { 'z','x','c','v','b','n','m' };
    
        bool brow1 = true;
        bool brow2 = true;
        bool brow3 = true;
    
    
        for (auto &elem : words)
        {
            bool d1 = true, d2 = true, d3 = true;
            for (auto &key : elem)
            {
                if (d1)
                {
                    auto re = row1.find(tolower(key));
                    if (re == row1.end())
                        d1 = false;
                }
                if (d2)
                {
                    auto re = row2.find(tolower(key));
                    if (re == row2.end())
                        d2 = false;
                }
                if (d3)
                {
                    auto re = row3.find(tolower(key));
                    if (re == row3.end())
                        d3 = false;
                }
    
            }
            if (d1 || d2 || d3)
                res.push_back(elem);
        }
    
        return res;
    }
    
};

 

posted on 2017-03-05 02:05  123_123  阅读(83)  评论(0编辑  收藏  举报