题目
给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。
示例:
输入: [“Hello”, “Alaska”, “Dad”, “Peace”]
输出: [“Alaska”, “Dad”]
注意:
- 你可以重复使用键盘上同一字符。
- 你可以假设输入的字符串将只包含字母。
代码模板:
class Solution {
public String[] findWords(String[] words) {
}
}
分析
首先循环每个单词,看当前单词每一个字母在哪一行,有不一样的flag=false,然后直接进入下一个词。
解答
class Solution {
public String[] findWords(String[] words) {
String[] str ={"QWERTYUIOP","ASDFGHJKL","ZXCVBNM"};
List<String> res = new ArrayList<>();
for(String word:words){
boolean flag = true;
int state = -1;
for(int i = 0;i < word.length();i ++){
char item = word.toUpperCase().charAt(i);
for(int j = 0;j < str.length ;j++){
if(str[j].contains(String.valueOf(item))){
if(state != -1 && state != j){
flag = false;
break;
}else{
state = j;
}
}
}
if(!flag){
break;
}
}
if(flag){
res.add(word);
}
}
return res.toArray(new String[res.size()]);
}
}