Leetcode-键盘行

167 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第29天,点击查看活动详情

学习过程中将笔记整理跟大家分享,希望对大家也有所帮助,共同成长进步💪~
如果大家喜欢,可以点赞或留言💕~~~~,谢谢大家⭐️⭐️⭐️~~~

题目:键盘行

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

  • 第一行由字符 "qwertyuiop" 组成。
  • 第二行由字符 "asdfghjkl" 组成。
  • 第三行由字符 "zxcvbnm" 组成。   image.png

示例 1:

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

示例2:

  • 输入: words = ["omk"]
  • 输出: []

示例3:

  • 输入: words = ["adsdf","sfd"]
  • 输出: ["adsdf","sfd"]

提示:

  • 1 <= words.length <= 20
  • 1 <= words[i].length <= 100
  • words[i] 由英文字母(小写和大写字母)组成

解题代码和思路如下:

/**
 * @param {string[]} words
 * @return {string[]}
 */
var findWords = function(words) {
    const keys = ['qwertyuiop', 'asdfghjkl', 'zxcvbnm'];
    const res = [];
    // 遍历三行键盘
    keys.forEach(key => {
        // 满足以下条件的单词放入res
        res.push(
            // 从words筛选出每个字母都在当前行的单词,并展开
            ...words.filter(word => {
                return word
                    .toLowerCase()
                    .split('')
                    .every(char => key.includes(char));
            })
        );
    });
    return res;
};

点击前往 LeetCode 练习

感谢大家阅读⭐️⭐️⭐️,如果喜欢,可以点赞或留言哟💕💕💕
后续会持续更新记录😊~~~

专栏推荐

推荐一下自己的专栏,欢迎大家收藏关注😊~

近期热门文章