leetcode.500 键盘行

给定一个单词列表,只返回可以使用在键盘同一行的字母打印出来的单词。键盘如下图所示。

American keyboard

示例:

输入: ["Hello", "Alaska", "Dad", "Peace"]
输出: ["Alaska", "Dad"]

思路:利用 Map 的键值对,存放每一行字符所对应的行数,然后将目标字符串转为小写字符串,并且转为字符数组,然后利用此字符数组,判断是否在同一行内,如果是在同一行内就加入 List,最后返回以字符串的形式返回 List 的内容。

代码:

class Solution {
    public String[] findWords(String[] words) {
        List<String> list = new ArrayList<>();
        Map<Character,Integer> map = new HashMap<>();
        String line1 = "qwertyuiop";
        String line2 = "asdfghjkl";
        String line3 = "zxcvbnm";
        
        for(char c : line1.toCharArray()){
            map.put(c,1);
        }
        
        for(char c : line2.toCharArray()){
            map.put(c,2);
        }
        
        for(char c : line3.toCharArray()){
            map.put(c,3);
        }

        for(String word :words){
            boolean add = true;
            char[] cs = word.tocharArray();
            int rownumber = map.get(cs[0]);
            
            for(char c:cs){
                if(rownumber != map.get(c)){
                    add = false;
                    break;
                }
            }
            if(add){
                list.add(word);
            }
            
        }
        String[] a = new String[list.size()];
        for(int i = 0;i < list.size ;i++){
            a[i] = list.get(i);
        }
        return a;
    }
}

大神思路:先根据目标字符串的第一个字符判断是应该哪一行的字符,然后利用这一行的字符串的indexOf() 方法判断目标字符串的每一个字符的下标,如果返回  -1 ,就说明不包含在内。

代码:

class Solution {
    public String[] findWords(String[] words) {
        String qline = "QWERTYUIOPqwertyuiop";
        String aline = "ASDFGHJKLasdfghjkl";
        String zline = "ZXCVBNMzxcvbnm";
        String m = "";
        List<String> list = new ArrayList<>();

        for(String word : words){
            if(qline.indexOf(word.charAt(0))!=-1){
                    m = qline;
            }
            if(aline.indexOf(word.charAt(0))!= -1){
                    m = aline;
            }
            if(zline.indexOf(word.charAt(0))!= -1){
                    m = zline;
            }
            boolean flag = true;
            for(int i = 0;i < word.length();i++){
                if(m.indexOf(word.charAt(i)) == -1){
                    flag = false;
                    break;
                }
            }
            if(flag){
            list.add(word);
            }
        }
        String[] a = new String[list.size()];
        for(int i = 0;i < list.size();i++){
            a[i] = list.get(i);
        }
        return a;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_40904220/article/details/84448262