给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。 美式键盘 中: 第一行由字符 “qwertyuiop“ 组成。 第二行由字符 “asdf
作者:互联网
class Solution {
public:
unordered_set<char> set1 = {'q', 'w', 'e', 'r', 't', 'y','u', 'i', 'o', 'p'};
unordered_set<char> set2 = {'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'};
unordered_set<char> set3 = {'z', 'x', 'c', 'v', 'b', 'n', 'm'};
vector<string> findWords(vector<string>& words) {
vector<string> res;
for (auto& str: words) {
bool flag = false;
if (set1.count(tolower(str[0]))) {
flag = check(str, set1);
} else if (set2.count(tolower(str[0]))) {
flag = check(str, set2);
} else if (set3.count(tolower(str[0]))) {
flag = check(str, set3);
}
if (flag) {
res.push_back(str);
}
}
return res;
}
bool check(string str, unordered_set<char> set){
transform(str.begin(),str.end(),str.begin(),::tolower);
for (int i = 1; i < str.length(); i++) {
if (!set.count(str[i])) {
return false;
}
}
return true;
}
};
标签:字符,set,tolower,美式,check,键盘,flag,str,unordered 来源: https://blog.csdn.net/vegeta98/article/details/121068559