public class Solution {
public String[] findWords(String[] words) {
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
// put all characters along with their rows into the map
map.put('q', 1);
map.put('w', 1);
map.put('e', 1);
map.put('r', 1);
map.put('t', 1);
map.put('y', 1);
map.put('u', 1);
map.put('i', 1);
map.put('o', 1);
map.put('p', 1);
map.put('a', 2);
map.put('s', 2);
map.put('d', 2);
map.put('f', 2);
map.put('g', 2);
map.put('h', 2);
map.put('j', 2);
map.put('k', 2);
map.put('l', 2);
map.put('z', 3);
map.put('x', 3);
map.put('c', 3);
map.put('v', 3);
map.put('b', 3);
map.put('n', 3);
map.put('m', 3);
ArrayList<Integer> indices = new ArrayList<>();
for (int i=0; i<words.length; i++) {
if (isInOneRow(words[i], map))
indices.add(i);
}
String[] res = new String[indices.size()];
for (int i=0; i<res.length; i++)
res[i] = words[indices.get(i)];
return res;
}
public static boolean isInOneRow(String str, HashMap<Character, Integer> map) {
if (str == null)
return true;
int row = map.get(Character.toLowerCase(str.charAt(0)));
for (int i=1; i<str.length(); i++) {
if (map.get(Character.toLowerCase(str.charAt(i))) != row)
return false;
}
return true;
}
}
Leetcode 500. Keyboard Row
最新推荐文章于 2021-01-24 22:56:51 发布