20211031 leetcode打卡 键盘行(难度-简单)
题目:
给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。
美式键盘 中:
第一行由字符 "qwertyuiop" 组成。
第二行由字符 "asdfghjkl" 组成。
第三行由字符 "zxcvbnm" 组成。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/keyboard-row
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
eg:
输入:words = ["Hello","Alaska","Dad","Peace"] 输出:["Alaska","Dad"]
代码:
执行用时 : 3ms
内存消耗 : 36.3MB
class Solution {
public String[] findWords(String[] words) {
String s1 = "qwertyuiop";
String s2 = "asdfghjkl";
String s3 = "zxcvbnm";
List<String> list=new ArrayList<>();
Collections.addAll(list,words);
for (int i = 0; i < words.length; i++) {
String s = words[i];//获取到字符串
char[] c = s.toCharArray();
int flag = 0;
if (s1.contains(String.valueOf(c[0]).toLowerCase())) {
flag = 1;//首字母在第一行
} else if (s2.contains(String.valueOf(c[0]).toLowerCase())) {
flag = 2;//首字母在第二行
} else {
flag = 3;//首字母在第三行
}
boolean b = false;//是否满足被移除的条件
switch (flag){
case 1:
for (char cc:c
) {if(!s1.contains(String.valueOf(cc).toLowerCase())){
b=true;
break;
}
}
break;
case 2:
for (char cc:c
) {
System.out.println(String.valueOf(cc).toLowerCase());
if(!s2.contains(String.valueOf(cc).toLowerCase())){
b=true;
break;
}
}
break;
case 3:
for (char cc:c
) {if(!s3.contains(String.valueOf(cc).toLowerCase())){
b=true;
break;
}
}
}
if(b==true){
list.set(i,"需要移除");
}
}
List<String> result=new ArrayList<>();
for (int i = 0; i <list.size() ; i++) {
if(!list.get(i).equals("需要移除")){
result.add(list.get(i));
}
}
return result.toArray(new String[result.size()]);
}
}
本文来自博客园,作者:skystrivegao,转载请注明原文链接:https://www.cnblogs.com/skystrive/p/15490935.html
整理不易,如果对您有所帮助 请点赞收藏,谢谢~
浙公网安备 33010602011771号