Leetcode 500. Keyboard Row

来源:互联网 发布:ntp服务器修改端口 编辑:程序博客网 时间:2024/05/29 15:50
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;    }}

0 0