键盘行

给你一个字符串数组 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;
    }
}
posted @ 2023-07-04 20:41  网抑云黑胶SVIP用户  阅读(49)  评论(0)    收藏  举报