500.键盘行
给你一个字符串数组 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] 由英文字母(小写和大写字母)组成
class Solution {
public static String[] findWords(String[] words) {
String[] find={"qwertyuiop","asdfghjkl","zxcvbnm"};
Map<Character,Integer> map=new HashMap<>();
for(int i=0;i<3;i++){
for(char c:find[i].toCharArray()){
map.put(c,i);
}
}
List<String> list = new ArrayList<String>();
for (String word : words) {
char[] chars = word.toLowerCase().toCharArray();
int line = map.get(chars[0]);
int i;
for (i = 0; i < chars.length; i++) {
if (map.get(chars[i]) != line) break;
}
if (i == chars.length) list.add(word);
}
String[] resultArray = new String[list.size()];
resultArray = list.toArray(resultArray);
return resultArray;
}
}