给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。
美式键盘 中:
第一行由字符 “qwertyuiop” 组成。
第二行由字符 “asdfghjkl” 组成。
第三行由字符 “zxcvbnm” 组成。
class Solution {
public:
vector<string> findWords(vector<string>& words) {
vector<string> ans;
map<char, int> temp;
string str1 = "qwertyuiopQWERTYUIOP";
string str2 = "asdfghjklASDFGHJKL";
string str3 = "zxcvbnmZXCVBNM";
for (int i = 0; i < str1.size(); ++i) {
temp.insert(pair<char, int>(str1[i], 1));
}
for (int i = 0; i < str2.size(); ++i) {
temp.insert(pair<char, int>(str2[i], 2));
}
for (int i = 0; i < str3.size(); ++i) {
temp.insert(pair<char, int>(str3[i], 3));
}
for (int i = 0; i < words.size(); ++i) {
int j = 1;
for (; j < words[i].size(); ++j) {
if (temp[words[i][0]] != temp[words[i][j]])//如果words中的某个字符串中的某个字符与此字符串的第一个字符不在同一行,不可以加入ans容器
break;
}
if (j == words[i].size())//循环正常退出,说明这个字符串的字符都在同一行,可以加入ans容器
ans.push_back(words[i]);
}
return ans;
}
};