美文网首页
500-键盘行

500-键盘行

作者: 饮酒醉回忆 | 来源:发表于2019-11-06 10:11 被阅读0次

键盘行

题目

给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。

image

示例:

输入: ["Hello", "Alaska", "Dad", "Peace"]
输出: ["Alaska", "Dad"]

注意:

你可以重复使用键盘上同一字符。
你可以假设输入的字符串将只包含字母。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/keyboard-row
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

思路

一种是笨办法,使用散列表存储

领扣有另一种解法是将键盘行存储在数组中,然后通过数组的比较查找确定.与散列表时间复杂度相同,内存消耗较少

代码

class Solution {
    public String[] findWords(String[] words) {
        //使用散列表存储键盘字母,然后遍历列表
        List<String> result = new ArrayList();
        Map<Character,Integer> cash = new HashMap();
        cash.put('Q',1);
        cash.put('W',1);
        cash.put('E',1);
        cash.put('R',1);
        cash.put('T',1);
        cash.put('Y',1);
        cash.put('U',1);
        cash.put('I',1);
        cash.put('O',1);
        cash.put('P',1);
        cash.put('q',1);
        cash.put('w',1);
        cash.put('e',1);
        cash.put('r',1);
        cash.put('t',1);
        cash.put('y',1);
        cash.put('u',1);
        cash.put('i',1);
        cash.put('o',1);
        cash.put('p',1);
        cash.put('a',2);
        cash.put('s',2);
        cash.put('d',2);
        cash.put('f',2);
        cash.put('g',2);
        cash.put('h',2);
        cash.put('j',2);
        cash.put('k',2);
        cash.put('l',2);
        cash.put('A',2);
        cash.put('S',2);
        cash.put('D',2);
        cash.put('F',2);
        cash.put('G',2);
        cash.put('H',2);
        cash.put('J',2);
        cash.put('K',2);
        cash.put('L',2);
        cash.put('z',3);
        cash.put('x',3);
        cash.put('c',3);
        cash.put('v',3);
        cash.put('b',3);
        cash.put('n',3);
        cash.put('m',3);
        cash.put('Z',3);
        cash.put('X',3);
        cash.put('C',3);
        cash.put('V',3);
        cash.put('B',3);
        cash.put('N',3);
        cash.put('M',3);
        for(int i = 0;i < words.length;i++){
            int level = cash.get(words[i].charAt(0));
            boolean flag = true;
            for(int j = 1;j < words[i].length();j++){
                int num = cash.get(words[i].charAt(j));
                if(num != level){
                    flag = false;
                }
            }
            if(flag){
                result.add(words[i]);
            }
        }
        return result.toArray(new String[result.size()]);
    }
}

相关文章

  • 500-键盘行

    键盘行 题目 给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。 示例: 输入: ...

  • 键盘行

    题目: 题目的理解: 判断每一个单词是否在同一行中,一共三行,每次判断前将单词转化为小写。如果单词都在同一行,那么...

  • 键盘行

    给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。 示例: 输入: ["Hello...

  • ⌨️ 键盘行

    题目描述:给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。图例 链接:https...

  • 键盘行

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/keyboa...

  • 20171211初级英语Day39

    Coach Shane's E cubed A. 500- to be STOKED! B. 501- dead ...

  • Leetcode中遇到的一些问题(1)

    题号:500, 键盘行 给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。键盘分布...

  • LeetCode 500. 键盘行

    500. 键盘行 给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。 示例: 注意...

  • Android工具类之 隐藏软键盘 显示软键盘 一行代码实现An

    隐藏软键盘 显示软键盘 一行代码实现Android软键盘与EditText的交互 http://mp.weixin...

  • Mybatis问题:There is no getter for

    在项目过程中遇到500-服务器报错问题。查看报错提醒为There is no getter for propert...

网友评论

      本文标题:500-键盘行

      本文链接:https://www.haomeiwen.com/subject/quoybctx.html