前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode - 键盘行

LeetCode - 键盘行

作者头像
晓痴
发布2019-07-24 14:08:58
3800
发布2019-07-24 14:08:58
举报
文章被收录于专栏:曌的晓痴曌的晓痴

两月以前的一题,LeetCode第500题,难度为简单。

原题地址:https://leetcode-cn.com/problems/keyboard-row/

题目描述

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

示例:

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

输出: ["Alaska", "Dad"]

注意:

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

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/keyboard-row

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

这题很简单。

  1. 首先记录下键盘上每个字母在第几排
  2. 然后遍历输入的数组,取字符串的第一个字符,记住该字符在第几排
  3. 然后去看该字符串中的每个字符是不是和第一个字符在同一排

中文官网题解:

https://leetcode-cn.com/problems/keyboard-row/solution/

个人题解:

代码语言:javascript
复制
class Solution {
    private static final byte[] bytes = new byte[]{1, 2, 2, 1, 0, 1, 1, 1, 0, 1, 1, 1, 2, 2, 0, 0, 0, 0, 1, 0, 0, 2, 0, 2, 0, 2};

   public String[] findWords(String[] words) {
        List<String> list = new ArrayList<>(words.length);
        int index;
        int line;
        boolean flag;
        for (int i = 0; i < words.length; i++) {
            index = Character.toLowerCase(words[i].charAt(0)) - 97;
            line = bytes[index];
            flag = false;
            for (char c : words[i].toCharArray()) {
                index = Character.toLowerCase(c) - 97;
                if (bytes[index] != line) {
                    flag = true;
                    break;
                }
            }
            if (!flag) {
                list.add(words[i]);
            }
        }
        return list.toArray(new String[list.size()]);
    }
}

结果:

这题很简单,所以,0ms是怎么做出来的?好奇。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 曌的晓痴 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档