给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。
示例:
输入: ["Hello", "Alaska", "Dad", "Peace"] 输出: ["Alaska", "Dad"]
注意:
- 你可以重复使用键盘上同一字符。
- 你可以假设输入的字符串将只包含字母。
class Solution { public String[] findWords(String[] words) { int[] line = new int[26]; int[] p1 = {16 ,22 ,4 ,17 ,19 ,24 ,20 ,8 ,14 ,15}; int[] p2 = {0 ,18 ,3 ,5 ,6 ,7 ,9 ,10 ,11}; int[] p3 = {25 ,23 ,2 ,21 ,1 ,13 ,12}; for(int p : p1){ line[p] = 1; } for(int p : p2){ line[p] = 2; } for(int p : p3){ line[p] = 3; } List<String> list = new ArrayList<>(); for(String s : words){ String sformat = s.toLowerCase(); boolean someNo = false; for(int i = 0 ; i< sformat.length()-1;i++){ if(line[sformat.charAt(i) - 'a'] != line[sformat.charAt(i+1) - 'a']){ someNo = true; break; } } if(!someNo) list.add(s); } String[] a = new String[list.size()]; list.toArray(a); return a; } }