leetcode-电话号码的字母组合

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

示例 1:

输入:digits = "23"

输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]

示例 2:

输入:digits = "2"

输出:["a","b","c"]

提示:

1 <= digits.length <= 4

digits[i] 是范围 ['2', '9'] 的一个数字。

思路 :考虑两点。第一点,当前数字考虑后是否还会被考虑?第二点,遍历的位置?第一点,当前数字对应字母情况考虑后,不会再被考虑。第二点,每次考虑当前数字即可。

综上,dfs中使用index考虑当前数字的情况,下一个数字的情况用index+1考虑。
代码

c 复制代码
class Solution {
    Map<Integer,String> phoneKey = new HashMap<>();
    public List<String> letterCombinations(String digits) {
        phoneKey.put(2,"abc");
        phoneKey.put(3,"def");
        phoneKey.put(4,"ghi");
        phoneKey.put(5,"jkl");
        phoneKey.put(6,"mno");
        phoneKey.put(7,"pqrs");
        phoneKey.put(8,"tuv");
        phoneKey.put(9,"wxyz");
        List<String> res = new ArrayList<>();
        dfs(digits, 0, "", res);
        return res;

    }

    public void dfs(String digits, int index, String temp, List<String> res){
        if(index==digits.length()){
            res.add(temp);
            return;
        }
		// 当前数字可以表示的字母情况
        String s = phoneKey.getOrDefault(Integer.parseInt(String.valueOf(digits.charAt(index))),"");
        for(int i = 0;i<s.length();i++){
            dfs(digits, index+1,temp+s.charAt(i),res);
        }
    }
}
相关推荐
吃好睡好便好4 小时前
用while循环语句求和
开发语言·学习·算法·matlab·信息可视化
王璐WL4 小时前
【C语言入门级教学】函数的概念2
c语言·数据结构·算法
不知名的忻5 小时前
B 树与 B+ 树:面试完全指南
b树·算法·面试·b+树
运筹vivo@6 小时前
2657. 找到两个数组的前缀公共数组 | 难度:中等
算法·leetcode·职场和发展·哈希表
索木木6 小时前
NCCL SHARP 和 TREE算法
java·服务器·算法
Raink老师7 小时前
【AI面试临阵磨枪-59】企业内部 AI 系统权限、数据隔离、审计设计
人工智能·面试·职场和发展
心中有国也有家7 小时前
hccl 架构拆解:昇腾集合通信库到底在做什么?
人工智能·经验分享·笔记·分布式·算法·架构
小O的算法实验室8 小时前
2026年MCS,Q-learning增强MOPSO与改进DWA融合算法+复杂三维地形下特定移动机器人动态路径规划
算法
JAVA社区8 小时前
Java进阶全套教程(四)—— SpringMVC框架详解
java·开发语言·spring·面试·职场和发展
Peter·Pan爱编程9 小时前
10. new_delete 不是 malloc_free 的包装
c++·人工智能·算法