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