给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。
示例1:
输入: ["Hello", "Alaska", "Dad", "Peace"] 输出: ["Alaska", "Dad"]
注意:
- 你可以重复使用键盘上同一字符。
- 你可以假设输入的字符串将只包含字母。
class Solution {
public String[] findWords(String[] words) {
String[] lines={"qwertyuiop","asdfghjkl","zxcvbnm"};
List<String> list=new LinkedList<>();
for(String temp:words){
String word=temp.toLowerCase();
int line=-1;
for(int i=0;i<3;i++)
if(lines[i].indexOf(word.substring(0,1))!=-1)
line=i;
boolean flag=true;
for(int i=0;i<word.length();i++)
if(lines[line].indexOf(word.substring(i,i+1))==-1){
flag=false;
break;
}
if(flag)
list.add(temp);
}
return list.toArray(new String[list.size()]);
}
}
class Solution {
private static byte[] keyBoard = new byte[]{
1,2,2,1,0,1,1,1,0,1,1,1,2,2,0,0,0,0,1,0,0,2,0,2,0,2,
4,4,4,4,4,4,
1,2,2,1,0,1,1,1,0,1,1,1,2,2,0,0,0,0,1,0,0,2,0,2,0,2
};
public String[] findWords(String[] words) {
List<String> result = new ArrayList<>();
int tmp;
boolean flag;
for(String word : words) {
tmp = keyBoard[word.charAt(0) - 'A'];
flag = true;
for(char c:word.toCharArray()) {
if(tmp != keyBoard[c - 'A']) {
flag = false;
break;
}
}
if(flag) {
result.add(word);
}
}
return result.toArray(new String[result.size()]);
}
}