Fork me on GitHub

500. Keyboard Row

500. Keyboard Row

1、LeetCode上的简单题,写了好半天,代码还比较多,刚学,能过就满意了;

2、整体思路(待会儿写):

 1 <script>
 2         // arr=["Hello", "Alaska", "Dad", "Peace"]
 3         var findWords = (words) => {
 4             // 把所有字母放在一个字符串中,利用index值
 5             //  0-9  表示键盘上第一行字母,即:q --->p
 6             // 10-18 表示键盘上第二行字母,即:a --->l
 7             // 19-25 表示键盘上第二行字母,即:z --->m    
 8             let rowArr = "qwertyuiopasdfghjklzxcvbnm";
 9             // 定义一个空数组,接收符合条件的元素
10             let resArr = [];
11             // 定义一个标志位,true表示符合条件,false表示不符合
12             let flag = null;
13             // 第一次循环,遍历words数组中的每个元素
14             for (let i = 0; i < words.length; i++) {
15                 //定义一个空数组,转换成小写的words数组
16                 let arr = [];
17                 //大写转小写
18                 arr[i] = words[i].toLowerCase();
19                 // 判断第一个字母是否在0-9之间,在,则表示表示第一排字母
20                 if (rowArr.indexOf(arr[i][0]) < 10) {
21                     // flag复位,因为每处理完一次words中的一个元素后,flag的值会发生变化,所以每次进到一个if中需要复位到true
22                     flag = true;
23                     // 遍历words[i]中的每个字母
24                     for (let j = 0; j < arr[i].length; j++) {
25                         if (rowArr.indexOf(arr[i][j]) >= 10) {
26                             flag = false
27                             break;
28                         }
29                     }
30                 }
31 
32                 // 判断第一个字母是否在9-18之间,在,则表示表示第二排字母
33                 if (rowArr.indexOf(arr[i][0]) >= 10 && rowArr.indexOf(arr[i][0]) <= 18) {
34                     flag = true;
35                     for (let j = 0; j < arr[i].length; j++) {
36                         if (rowArr.indexOf(arr[i][j]) <= 9 || rowArr.indexOf(arr[i][j]) >= 19) {
37                             flag = false;
38                             break;
39                         }
40                     }
41                 }
42 
43                 // 判断第一个字母是否在18-25之间,在,则表示表示第三排字母
44                 if (rowArr.indexOf(arr[i][0]) >= 19) {
45                     flag = true;
46                     for (let j = 0; j < arr[i].length; j++) {
47                         if (rowArr.indexOf(arr[i][j]) <= 18) {
48                             flag = false;
49                             break;
50                         }
51                     }
52                 }
53                 if (flag) {
54                     resArr.push(words[i])
55                 }
56             }
57             return resArr
58         }
59 
60         console.log(findWords(["Hello", "Alaska", "Dad", "Peace"]));
61     </script>

 

posted @ 2019-04-04 10:07  MisterZZL  阅读(99)  评论(0编辑  收藏  举报