给你一个字符串数组 words
,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。
美式键盘 中:
- 第一行由字符
"qwertyuiop"
组成。 - 第二行由字符
"asdfghjkl"
组成。 - 第三行由字符
"zxcvbnm"
组成。
示例 1:
输入:words = ["Hello","Alaska","Dad","Peace"] 输出:["Alaska","Dad"]
示例 2:
输入:words = ["omk"] 输出:[]
示例 3:
输入:words = ["adsdf","sfd"] 输出:["adsdf","sfd"]
提示:
1 <= words.length <= 20
1 <= words[i].length <= 100
words[i]
由英文字母(小写和大写字母)组成
Related Topics
凑合一个哈希表
class Solution {
public String[] findWords(String[] words) {
String s1 = "qwertyuiopQWERTYUIOP";
String s2 = "asdfghjklASDFGHJKL";
String s3 = "zxcvbnmZXCVBNM";
HashMap<Character,Integer> hashMap = new HashMap<>();
for (int i = 0; i < s1.length(); i++) {
hashMap.put(s1.charAt(i),1);
}
for (int i = 0; i < s2.length(); i++) {
hashMap.put(s2.charAt(i),2);
}
for (int i = 0; i < s3.length(); i++) {
hashMap.put(s3.charAt(i),3);
}
List<String> res = new ArrayList<>();
for (String word : words) { ;
if (word.length()==1){
res.add(word);
continue;
}
int i = 1;
for (; i < word.length(); i++) {
if (!hashMap.get(word.charAt(i)).equals(hashMap.get(word.charAt(i - 1)))){
break;
}
if (i==word.length()-1){
res.add(word);
}
}
}
return res.toArray(new String[0]);
}
}
发表评论