Given a List of words, return the words that can be typed using letters of alphabet on only one row's of American keyboard like the image below.
Example 1:
Input: ["Hello", "Alaska", "Dad", "Peace"]Output: ["Alaska", "Dad"]
Note:
- You may use one character in the keyboard more than once.
- You may assume the input string will only contain letters of alphabet.
题目标签:Hash Table
题目给了我们一个words array,让我们判断每一个word 中的 chars 是否都来自于键盘上的同一行。
利用HashMap 把键盘上的3行 chars 保存:char 当作 key;行数 当作 value。
接着遍历words,检查每一个word。
Java Solution:
Runtime beats 68.36%
完成日期:06/07/2017
关键词:HashMap
关键点:char 当作 key;行数 当作 value
1 class Solution 2 { 3 public String[] findWords(String[] words) 4 { 5 HashMapmap = new HashMap<>(); 6 List resList = new ArrayList<>(); 7 8 String row1 = "qwertyuiop"; 9 String row2 = "asdfghjkl";10 String row3 = "zxcvbnm";11 12 // set up the map13 for(char c: row1.toCharArray())14 map.put(c, 1);15 16 for(char c: row2.toCharArray())17 map.put(c, 2);18 19 for(char c: row3.toCharArray())20 map.put(c, 3);21 22 23 // iterate each word to check all chars are from one row24 for(String word: words)25 {26 char[] wordChars = word.toLowerCase().toCharArray();27 int rowNumber = map.get(wordChars[0]);28 boolean add = true;29 30 for(char c: wordChars)31 {32 if(rowNumber != map.get(c))33 {34 add = false;35 break;36 }37 38 }39 40 if(add)41 resList.add(word);42 }43 44 String[] res = new String[resList.size()];45 46 for(int i=0; i
参考资料:N/A
LeetCode 题目列表 -