Leetcode 500 键盘行

题目

给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。

美式键盘 中:

第一行由字符 “qwertyuiop” 组成。
第二行由字符 “asdfghjkl” 组成。
第三行由字符 “zxcvbnm” 组成。

解题思路

  给键盘每一行字符与行数映射一下,然后对每个单词的每个字符进行映射取值,取映射值全一样的。

代码

class Solution {
    public String[] findWords(String[] words) {
        int[] map = new int[26];
        String[] keyboard = {"qwertyuiop", "asdfghjkl", "zxcvbnm"};
        for (int i = 0; i < keyboard.length; i++) {
            for (int j = 0; j < keyboard[i].length(); j++) {
                map[keyboard[i].charAt(j) - 'a'] = i;
            }
        }

        List<String> tmp = new ArrayList<>();
        for (String word : words) {
            String lowerWord = word.toLowerCase();
            int row = 0;
            for (int i = 0; i < lowerWord.length(); i++) {
                if (i == 0) row = map[lowerWord.charAt(i) - 'a'];
                else if (row != map[lowerWord.charAt(i) - 'a']) break;
                if (i == lowerWord.length() - 1) tmp.add(word);
            }
        }
        String[] ans = new String[tmp.size()];
        for (int i = 0; i < tmp.size(); i++) {
            ans[i] = tmp.get(i);
        }
        return ans;
    }
}

  什么? 凎碎了100%/97.60%?盲猜样例太少了。

上一篇:rosrun teleop_twist_keyboard teleop_twist_keyboard.py


下一篇:女朋友或有不正当关系?看我如何用Python来判案