题目描述
给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。
示例:
输入: ["Hello", "Alaska", "Dad", "Peace"] 输出: ["Alaska", "Dad"]
注意:
- 你可以重复使用键盘上同一字符。
- 你可以假设输入的字符串将只包含字母。
解题思路
class Solution {
public:
vector<string> findWords(vector<string>& words) {
vector<string> ans;
unordered_map<char,int> mp;
vector<string> str = {"qwertyuiop","asdfghjkl","zxcvbnm"};
for(int i=0;i<str.size();i++){
for(int j=0;j<str[i].length();j++) mp[str[i][j]]=i;
}
for(int i=0;i<words.size();i++){
int t = mp[tolower(words[i][0])],j = 1;
while(j<words[i].length()&&mp[tolower(words[i][j])]==t) j++;
if(j>=words[i].length()) ans.push_back(words[i]);
}
return ans;
}
};