500.键盘行
给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。
示例1:
输入: [“Hello”, “Alaska”, “Dad”, “Peace”]
输出: [“Alaska”, “Dad”]
注意:
- 你可以重复使用键盘上同一字符。
- 你可以假设输入的字符串将只包含字母。
分析: 每行字母的大小写存入字符串中,找到每个单词第一个字符所属字符串,依次判断剩余字母是否属于该字符串即可。
class Solution {
public:
vector<string> findWords(vector<string>& words) {
string a="qwertyuiopQWERTYUIOP";
string b="asdfghjklASDFGHJKL";
string c="zxcvbnmZXCVBNM";
string s;
int flag=0;
vector<string> ss;
ss.push_back(a);
ss.push_back(b);
ss.push_back(c);
int j=0;
vector<string> res;
for(int i=0;i<words.size();i++)
{
s=words[i];
if(findchar(ss[0],s[0])) flag=0;
else if(findchar(ss[1],s[0])) flag=1;
else if(findchar(ss[2],s[0])) flag=2;
for(j=0;j<s.size();j++)
{
if(!(findchar(ss[flag],s[j]))) break;
}
if(j==s.size()) res.push_back(s);
}
return res;
}
bool findchar(string s,char c)
{
for(int i=0;i<s.size();i++)
{
if(c==s[i]) return true;
}
return false;
}
};