500.键盘行

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

美式键盘 中:

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

American keyboard

示例 1:

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

Solution

当然可以对比,根据383.赎金信的启发,可以使用Stringcontains以及split("")方法来判断单个字符是否在字符串中

以及350.两个数组的交集2中,用Arrays类的copyofRange方法快捷输出答案数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public String[] findWords(String[] words) {
String s1 = "qwertyuiopQWERTYUIOP";
String s2 = "asdfghjklASDFGHJKL";
String [] ans=new String [words.length];
int count =0;
for(int i=0;i<words.length;i++){
String[] x=words[i].split("");
int n1 = 0, n2 = 0 , n3 = 0;
for(int j = 0 ; j < x.length; j++){
if(s1.contains(x[j])) n1++;
else if(s2.contains(x[j])) n2++;
else n3++;
}
if(n1 == x.length || n2 == x.length || n3 == x.length) ans[count++]=words[i];
}

return Arrays.copyOfRange(ans,0,count);
}
}