键盘行Java
文章发布较早,内容可能过时,阅读注意甄别。
# 题目
给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。
美式键盘 中:
- 第一行由字符 "qwertyuiop" 组成。
- 第二行由字符 "asdfghjkl" 组成。
- 第三行由字符 "zxcvbnm" 组成。
示例 1:
输入:words = ["Hello","Alaska","Dad","Peace"]
输出:["Alaska","Dad"]
示例 2:
输入:words = ["omk"]
输出:[]
示例 3:
输入:words = ["adsdf","sfd"]
输出:["adsdf","sfd"]
提示:
- 1 <= words.length <= 20
- 1 <= words[i].length <= 100
- words[i] 由英文字母(小写和大写字母)组成
# 思路
list.toArray(new String[list.size()]);
# 解法
class Solution {
public String[] findWords(String[] words) {
String s1 = "qwertyuiopQWERTYUIOP";
String s2 = "asdfghjklASDFGHJKL";
String s3 = "zxcvbnmZXCVBNM";
List<String> list = new ArrayList<>();
for(String word : words){
int n1 = 0, n2 = 0 , n3 = 0 ,leng = word.length();
for(int i = 0 ; i < leng ; i++){
if(s1.contains(word.charAt(i)+"")) n1++;
else if(s2.contains(word.charAt(i)+"")) n2++;
else n3++;
}
if(n1 == leng || n2 == leng || n3 == leng) list.add(word);
}
return list.toArray(new String[list.size()]);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 总结
- 分析出几种情况,然后分别对各个情况实现