LeetCode刷题日志-17.电话号码的字母组合

纯暴力解法,digits有多长,就循环多少次进行字母组合

java 复制代码
class Solution {
    public List<String> letterCombinations(String digits) {
        List<String> reslut = new ArrayList<>();
        if(digits.equals(""))
        return reslut;

       Map<Integer, String> letter_hash = new HashMap<Integer, String>() {{
            put(2, "abc");
            put(3, "def");
            put(4, "ghi");
            put(5, "jkl");
            put(6, "mno");
            put(7, "pqrs");
            put(8, "tuv");
            put(9, "wxyz");
        }};
        if(digits.length() == 1){
            for(char c : letter_hash.get(Integer.parseInt(String.valueOf(digits.charAt(0)))).toCharArray()){
                reslut.add(String.valueOf(c));
            }
        }
        
        if(digits.length() == 2){
            for(char c : letter_hash.get(Integer.parseInt(String.valueOf(digits.charAt(0)))).toCharArray()){
                StringBuilder re  =new StringBuilder();
                for(char d : letter_hash.get(Integer.parseInt(String.valueOf(digits.charAt(1)))).toCharArray()){
                    re.append(String.valueOf(c));
                    re.append(String.valueOf(d));
                    reslut.add(re.toString());
                    re.delete(0,re.length());
                }
            }
        }

        if(digits.length() == 3){
            for(char c : letter_hash.get(Integer.parseInt(String.valueOf(digits.charAt(0)))).toCharArray()){
                StringBuilder re  =new StringBuilder();
                for(char d : letter_hash.get(Integer.parseInt(String.valueOf(digits.charAt(1)))).toCharArray()){
                    for(char e : letter_hash.get(Integer.parseInt(String.valueOf(digits.charAt(2)))).toCharArray()){
                        re.append(String.valueOf(c));
                        re.append(String.valueOf(d));
                        re.append(String.valueOf(e));
                        reslut.add(re.toString());
                        re.delete(0,re.length());
                    }
                }
            }
        }

        if(digits.length() == 4){
            for(char c : letter_hash.get(Integer.parseInt(String.valueOf(digits.charAt(0)))).toCharArray()){
                StringBuilder re  =new StringBuilder();
                for(char d : letter_hash.get(Integer.parseInt(String.valueOf(digits.charAt(1)))).toCharArray()){
                    for(char e : letter_hash.get(Integer.parseInt(String.valueOf(digits.charAt(2)))).toCharArray()){
                        for(char f : letter_hash.get(Integer.parseInt(String.valueOf(digits.charAt(3)))).toCharArray()){
                            re.append(String.valueOf(c));
                            re.append(String.valueOf(d));
                            re.append(String.valueOf(e));
                            re.append(String.valueOf(f));
                            reslut.add(re.toString());
                            re.delete(0,re.length());
                        }
                    }
                }
            }
        }
    return reslut;
    }
}
相关推荐
容辞1 小时前
算法-贪婪算法
算法·贪心算法
Evand J1 小时前
MATLAB程序演示与编程思路,相对导航,四个小车的形式,使用集中式扩展卡尔曼滤波(fullyCN-EKF)
人工智能·算法
椰萝Yerosius3 小时前
[题解]2023CCPC黑龙江省赛 - Ethernet
算法·深度优先
IT猿手4 小时前
基于 Q-learning 的城市场景无人机三维路径规划算法研究,可以自定义地图,提供完整MATLAB代码
深度学习·算法·matlab·无人机·强化学习·qlearning·无人机路径规划
竹下为生5 小时前
LeetCode --- 448 周赛
算法·leetcode·职场和发展
未名编程6 小时前
LeetCode 88. 合并两个有序数组 | Python 最简写法 + 实战注释
python·算法·leetcode
Cuit小唐6 小时前
C++ 迭代器模式详解
c++·算法·迭代器模式
2401_858286116 小时前
CD37.【C++ Dev】string类的模拟实现(上)
开发语言·c++·算法
╭⌒心岛初晴6 小时前
JAVA练习题(2) 找素数
java·开发语言·算法·java练习题·判断素数/质数
懒懒小徐6 小时前
2023华为od统一考试B卷【二叉树中序遍历】
数据结构·算法·华为od