【JS】 500. 键盘行 #哈希表

本文介绍了一种算法,用于从给定的单词列表中筛选出仅使用键盘同一行字母组成的单词。通过遍历单词和字符,算法确定每个单词是否符合标准,并将其添加到结果数组中。示例代码展示了如何实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

American keyboard
在这里插入图片描述

示例:
输入: [“Hello”, “Alaska”, “Dad”, “Peace”]
输出: [“Alaska”, “Dad”]

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



解法一:

把键盘的三行字符赋值给3个变量, str1 ,str2 ,str3

两个 for 循环,第一个遍历单词,第二个遍历每一个字符

找到单词的第0个字符,以确定它属于哪个?( str1, str2, str3),赋值给 str

使用 str.indexOf() 查找每个单词,如果都能找到,就写入数组 arr

//2018/11/21 下午

var findWords = function(words) {
    var str1='QWERTYUIOP-qwertyuiop', str2='ASDFGHJKL-asdfghjkl' ;
    var str3='ZXCVBNM-zxcvbnm' ,str ,arr=[] ,status=1;

    for(var i=0;i<words.length;i++){        
        for(var j=0;j<words[i].length;j++){
            if(j==0){
                if(str1.indexOf(words[i][0])>=0){
                    str = str1
                }else if(str2.indexOf(words[i][0])>=0){
                    str = str2
                }else{
                    str = str3
                }
            }else{
                if(str.indexOf(words[i][j]) <0) status=0;                
            }
        }
        if(status==1) arr.push(words[i])
        status=1
    }    
    return arr;
};

22 / 22 个通过测试用例
执行用时:60 ms

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值