给你一个字符串数组 words
,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。
请注意,字符串 不区分大小写,相同字母的大小写形式都被视为在同一行。
美式键盘 中:
- 第一行由字符
"qwertyuiop"
组成。 - 第二行由字符
"asdfghjkl"
组成。 - 第三行由字符
"zxcvbnm"
组成。
class Solution {
public:
vector<string> findWords(vector<string>& words) {
//创建输出字符串
vector<string> ans;
//将字母转化成行号
string idx="12210111011122000010020202";
//遍历整个字符串数组
for(auto it=words.begin();it!=words.end();it++){
//获取当前字符串第一位字符小写行号
char a=idx[tolower((*it)[0])-'a'];
//初始化为在同一行
bool isvalid=true;
//遍历当前字符串
for(int i=1;i<(*it).size();i++){
//如果当前字符串后几位字符小写行号与第一位行号不同
if(a!=idx[tolower((*it)[i])-'a']){
//表示不在同一行,并退出当前循环
isvalid=false;
break;
}
}
//若在同一行
if(isvalid){
//将当前字符串加入输出字符串数组
ans.push_back(*it);
}
}
//返回输出字符串数组
return ans;
}
};