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
整理不易,如果对您有所帮助 请点赞收藏,谢谢~