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.
Note:
- You may use one character in the keyboard more than once.
- You may assume the input string will only contain letters of alphabet.
非常没意义的一道题,leetcode现在这种绝对不会面到的easy题太多了
class Solution {
public String[] findWords(String[] words) {
if(words == null || words.length == 0)
return new String[0];
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
char[] c1 = new char[]{'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'};
char[] c2 = new char[]{'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'};
char[] c3 = new char[]{'z', 'x', 'c', 'v', 'b', 'n', 'm'};
for(char c: c1)
map.put(c, 1);
for(char c: c2)
map.put(c, 2);
for(char c: c3)
map.put(c,3);
List<String> list = new ArrayList<String>();
for(String word: words) {
String lowerCased = word.toLowerCase();
int row = map.get(lowerCased.charAt(0));
int i = 1;
for(; i < lowerCased.length(); i++) {
if(map.get(lowerCased.charAt(i)) != row)
break;
}
if(i == lowerCased.length())
list.add(word);
}
String[] res = new String[list.size()];
for(int i = 0; i < res.length; i++)
res[i] = list.get(i);
return res;
}
}