题目描述:
给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。
示例1:
输入: ["Hello", "Alaska", "Dad", "Peace"] 输出: ["Alaska", "Dad"]
注意:
- 你可以重复使用键盘上同一字符。
- 你可以假设输入的字符串将只包含字母。
代码:
class Solution {
public String[] findWords(String[] words) {
String[] find={"qwertyuiop","asdfghjkl","zxcvbnm"};
Map<Character,Integer> mp=new HashMap<>();
for(int i=0;i<3;i++){
for(char c:find[i].toCharArray()){
mp.put(c,i);
}
}
List<String> list=new ArrayList<>();
for(String word:words){
int index=mp.get(word.toLowerCase().charAt(0));
for(char c:word.toLowerCase().toCharArray()){
if(mp.get(c)!=index){
index=-1;
break;
}
}
if(index!=-1){
list.add(word);
}
}
return list.toArray(new String[list.size()]);
}
}