描述
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.
You may use one character in the keyboard more than once.
You may assume the input string will only contain letters of alphabet.
您在真实的面试中是否遇到过这个题?
是
样例
Input: ["Hello", "Alaska", "Dad", "Peace"]
Output: ["Alaska", "Dad"]
这道题比较简单,使用关联容器储存字母就好。
class Solution {
public:
/**
* @param words: a list of strings
* @return: return a list of strings
*/
vector<string> findWords(vector<string> &words) {
// write your code here
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;
else if (row2.count(c)) two = 1;
else if (row3.count(c)) three = 1;
if (one + two + three > 1) break;
}
if (one + two + three == 1) res.push_back(word);
}
return res;
}
};