题目描述:
给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。
美式键盘 中:
第一行由字符 “qwertyuiop” 组成。
第二行由字符 “asdfghjkl” 组成。
第三行由字符 “zxcvbnm” 组成。
示例1:
输入:words = [“Hello”,“Alaska”,“Dad”,“Peace”]
输出:[“Alaska”,“Dad”]
示例2:
输入:words = [“omk”]
输出:[]
示例3:
输入:words = [“adsdf”,“sfd”]
输出:[“adsdf”,“sfd”]
提示:
1 <= words.length <= 20
1 <= words[i].length <= 100
words[i] 由英文字母(小写和大写字母)组成
代码:
class Solution {
public:
int check(string a,string b,int x){
for(int i=0;i<x;i++){
if(b.find(a[i])==string::npos && b.find(tolower(a[i])) == string::npos){
return 0;
}
}
return 1;
}
vector<string> findWords(vector<string>& words) {
string s1 = "qwertyuiop";
string s2 = "asdfghjkl";
string s3 = "zxcvbnm";
int n = words.size();
vector<string> v;
for(int i=0;i<n;i++){
int l = words[i].length();
if(check(words[i],s1,l)||check(words[i],s2,l)||check(words[i],s3,l)){
v.push_back(words[i]);
}
}
return v;
}
};