500.键盘行
给你一个字符串数组 words
,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。
美式键盘 中:
- 第一行由字符
"qwertyuiop"
组成。
- 第二行由字符
"asdfghjkl"
组成。
- 第三行由字符
"zxcvbnm"
组成。
示例 1:
1 2
| 输入:words = ["Hello","Alaska","Dad","Peace"] 输出:["Alaska","Dad"]
|
Solution:
当然可以对比,根据383.赎金信
的启发,可以使用String
的contains
以及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); } }
|