500.Keyboard Row
500.Keyboard Row
难度:Easy
给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。
示例:
输入: ["Hello", "Alaska", "Dad", "Peace"] 输出: ["Alaska", "Dad"]
注意: 你可以重复使用键盘上同一字符。 你可以假设输入的字符串将只包含字母。
代码如下:
1
class Solution {
2
public:
3
vector<string> findWords(vector<string>& words) {
4
vector<string> res;
5
for(auto w: words)
6
{
7
int id=getid(w[0]);
8
// cout<<id<<endl;
9
int len=w.length();
10
int i;
11
for(i=1;i<len;i++)
12
if(!(l[id].count(w[i]) ||l[id].count(w[i]+32) ) )
13
break;
14
if(i==len) res.push_back(w);
15
}
16
return res;
17
18
}
19
private:
20
vector<unordered_set<char>> l={\{'q','w','e','r','t','y','u','i','o','p'},{'a','s','d','f','g','h','j','k','l'},{'z','x','c','v','b','n','m'} };
21
// unordered_set<char> l1={'q','w','e','r','t','y','u','i','o','p'};
22
// unordered_set<char> l2={'a','s','d','f','g','h','j','k','l'};
23
// unordered_set<char> l3={'z','x','c','v','b','n','m'};
24
int getid(char a)
25
{
26
for(int i=0;i<3;i++)
27
if(l[i].count(a) || l[i].count(a+32)) return i;
28
//cout<<a<<endl;
29
// cout<<l[1].count('h')<<endl;
30
return -1;
31
}
32
};
Copied!
Copy link