给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。
示例1:
输入: ["Hello", "Alaska", "Dad", "Peace"] 输出: ["Alaska", "Dad"]
注意:
- 你可以重复使用键盘上同一字符。
- 你可以假设输入的字符串将只包含字母。
class Solution {
public:
int getrow(char c) {
vector<char> row0 = { 'q','w','e','r','t','y','u','i','o','p' };
vector<char> row1 = { 'a','s','d','f','g','h','j','k','l' };
vector<char> row2 = { 'z','x','c','v','b','n','m' };
//查找时,一律转化为小写
c=tolower(c);
int i = 0;
for (;i < row0.size();++i)
if (c == row0[i])
return 0;//即在row0中成功找到
int j = 0;//否则从row1中查找
for (;j < row1.size();++j)
if (row1[j] == c)
return 1;
return 2;//row1中也没有找到时,必然在row2中
}
public:
vector<string> findWords(vector<string>& words) {//注意大小写问题,最后的res的大小写必须与输入的保持一致
vector<string> res;
for(int i=0;i<words.size();++i)//对于words中的每一个string
{
int location=getrow(words[i][0]);
int j=0;
for(;(j<words[i].length())&&(getrow(words[i][j])==location);++j);//空语句
if(j==words[i].length())
res.push_back(words[i]);
}
return res;
}
};