给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。
美式键盘 中:
第一行由字符 "qwertyuiop" 组成。
第二行由字符 "asdfghjkl" 组成。
第三行由字符 "zxcvbnm" 组成。
示例 1:
输入:words = ["Hello","Alaska","Dad","Peace"]
输出:["Alaska","Dad"]
示例 2:
输入:words = ["omk"]
输出:[]
示例 3:
输入:words = ["adsdf","sfd"]
输出:["adsdf","sfd"]
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/keyboard-row
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
超级无敌屎山代码
class Solution {
public String[] findWords(String[] words) {
//记录三个字符串出现的位置
String result[] = new String[words.length];
int[] num1 = new int[26];
int[] num2 = new int[26];
int[] num3 = new int[26];
String str1 = "qwertyuiop";
String str2 = "asdfghjkl";
String str3 = "zxcvbnm";
for(int i=0;i<str1.length();i++){
num1[str1.charAt(i) - 'a']++;
}
for(int i=0;i<str2.length();i++){
num2[str2.charAt(i) - 'a']++;
}
for(int i=0;i<str3.length();i++){
num3[str3.charAt(i) - 'a']++;
}
//判断字符串是否在同一行
int index = 0;
for(int j = 0;j<words.length;j++){
for(int k = 0;k<words[j].length();k++){
if(num1[words[j].toLowerCase().charAt(k) -'a']!=1){
break;
}
if(k==words[j].length()-1){
result[index] = words[j];
index++;
}
}
for(int k = 0;k<words[j].length();k++){
if(num2[words[j].toLowerCase().charAt(k) -'a']!=1){
break;
}
if(k==words[j].length()-1){
result[index] = words[j];
index++;
}
}
for(int k = 0;k<words[j].length();k++){
if(num3[words[j].toLowerCase().charAt(k) -'a']!=1){
break;
}
if(k==words[j].length()-1){
result[index] = words[j];
index++;
}
}
}
System.out.println(Arrays.toString(result));
String[] resultEnd = new String[index];
for(int i=0;i<resultEnd.length ; i++){
if(!result[i].isEmpty()){
resultEnd[i] = result[i];
}
}
return resultEnd;
}
}
标签:String,示例,int,键盘,words,new
From: https://www.cnblogs.com/xiaochaofang/p/17526958.html