给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。
示例1:
输入: ["Hello", "Alaska", "Dad", "Peace"] 输出: ["Alaska", "Dad"]
注意:
- 你可以重复使用键盘上同一字符。
- 你可以假设输入的字符串将只包含字母。
将同一行的字符存入HashMap中,键为字符,值为行数(从上倒下分别为0,1,2),然后查找给定字符串是否全在同一行即可
public String[] findWords(String[] words) {
HashMap<Character, Integer> map=new HashMap<>();
String []s= {"qwertyuiop","asdfghjkl","zxcvbnm"};
for(int i=0;i<s.length;i++) {
char a[]=s[i].toCharArray();
for(int j=0;j<a.length;j++) {
map.put(a[j], i);
}
}
List<String> list=new ArrayList<>();
for(int i=0;i<words.length;i++) {
String str=words[i].toLowerCase();
char a[]=str.toCharArray();
int x=map.get(a[0]);
boolean flag=true;
for(int j=1;j<a.length;j++) {
if(map.get(a[j])!=x)
{
flag=false;
break;
}
}
if(flag)
list.add(words[i]);
}
words=new String[list.size()];
int i=0;
for(String ss:list) {
words[i]=ss;
i++;
}
return words;
}