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;}
}