项目场景:
行百里路者半九十
问题描述
- 键盘行
给你一个字符串数组 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] 由英文字母(小写和大写字母)组成
通过次数61,983提交次数83,342
原因分析:
看了大佬的代码受教了。。。
他把这个单词在每一行出现的次数记录下来
然后分别对比
思路很清晰
解决方案:
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()]);}
}