500 Keyboard Row 键盘行

给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。

详见: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;
    }
};

 参考:http://www.cnblogs.com/grandyang/p/6421749.html

猜你喜欢

转载自www.cnblogs.com/xidian2014/p/8906284.html