LeetCode 500. Keyboard Row (键盘行)

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.


American keyboard


Example 1:

Input: ["Hello", "Alaska", "Dad", "Peace"]
Output: ["Alaska", "Dad"]

 

Note:

  1. You may use one character in the keyboard more than once.
  2. 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         HashMap<Character, Integer> map = new HashMap<>();
 6         List<String> resList = new ArrayList<>();
 7         
 8         String row1 = "qwertyuiop";
 9         String row2 = "asdfghjkl";
10         String row3 = "zxcvbnm";
11         
12         // set up the map
13         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 row
24         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<res.length; i++)
47             res[i] = resList.get(i);
48         
49         return res;
50     }
51 }

参考资料:N/A  

 

LeetCode 题目列表 - LeetCode Questions List

posted @ 2017-11-13 09:46  Jimmy_Cheng  阅读(659)  评论(0编辑  收藏  举报