给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。
示例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; }