500 Keyboard Row

Given a list of words, return only words that can be printed using the letters on the same row of the keyboard.

See: https://leetcode.com/problems/keyboard-row/description/

C++:

class Solution {
public:
    vector<string> findWords(vector<string>& words)
    {
        vector<string> 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'};
        for (string word : words)
        {
            int one = 0, two = 0, three = 0;
            for (char c : word)
            {
                if (c < 'a')
                {
                    c += 32;
                }
                if (row1.count(c))
                {
                    one = 1;
                }
                if (row2.count(c))
                {
                    two = 1;
                }
                if (row3.count(c))
                {
                    three = 1;
                }
                if (one + two + three > 1)
                {
                    break;
                }
            }
            if (one + two + three == 1)
            {
                res.push_back(word);
            }
        }
        return res;
    }
};

 Reference: http://www.cnblogs.com/grandyang/p/6421749.html

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=324650797&siteId=291194637
Row