0
点赞
收藏
分享

微信扫一扫

力扣算法学习day19-1

陌岛 2022-02-08 阅读 78

文章目录

力扣算法学习day19-1

17-电话号码的字母组合

题目

image-20220208110055558

image-20220208110133348

代码实现

class Solution {
    // 自己直接想到的方法。0ms
    // List<String> result = new ArrayList<>();
    // StringBuilder path = new StringBuilder();
    // public List<String> letterCombinations(String digits) {
    //     // 由题知,长度至少为0.
    //     if(digits.length() == 0){
    //         return result;
    //     }
    //     HashMap<Character,char[]> map = new HashMap<>();
    //     map.put('2',new char[]{'a','b','c'});
    //     map.put('3',new char[]{'d','e','f'});
    //     map.put('4',new char[]{'g','h','i'});
    //     map.put('5',new char[]{'j','k','l'});
    //     map.put('6',new char[]{'m','n','o'});
    //     map.put('7',new char[]{'p','q','r','s'});
    //     map.put('8',new char[]{'t','u','v'});
    //     map.put('9',new char[]{'w','x','y','z'});
    //     char[] number = digits.toCharArray();
    //     recall(0,number,map);

    //     return result;
    // }
    // public void recall(int i,char[] number,HashMap<Character,char[]> map){
    //     if(path.length() == number.length){
    //         result.add(path.toString());
    //         return;
    //     }

    //     char[] temp = map.get(number[i]);
    //     for(int j = 0;j < temp.length;j++){
    //         path.append(temp[j]);
    //         recall(i+1,number,map);
    //         path.deleteCharAt(path.length() - 1);
    //     }
    // }

    // 其他方法:使用数组,优势,写得更快?速度一样0ms
    String[] numString = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
    List<String> result = new ArrayList<>();
    StringBuilder path = new StringBuilder();
    public List<String> letterCombinations(String digits) {
        if(digits.length() == 0){
            return result;
        }
        recall(digits,0);

        return result;
    }
    public void recall(String digits,int index){
        if(path.length() == digits.length()){
            result.add(path.toString());
            return;
        }

        String str = numString[digits.charAt(index)-'0'];
        for(int j = 0;j < str.length();j++){
            path.append(str.charAt(j));
            recall(digits,index+1);
            path.deleteCharAt(path.length()-1);
        }
    }
}
举报

相关推荐

力扣算法学习day13-1

力扣算法学习day15-1

力扣算法学习day14-1

力扣算法学习day25-1

力扣算法学习day18-1

力扣算法学习day12-2

力扣算法学习day20-3

0 条评论