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

digitsi 是范围 '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);
        }
    }
}
相关推荐
垆边人似月.7 小时前
华为题:盛最多水的容器
数据结构·算法
杨逢昌工厂6S管理7 小时前
116——杨逢昌:归位三定闭环法的旺季轻量化执行方案与工具清单
经验分享·笔记·职场和发展·学习方法
怦然丶心动7 小时前
用 Java 把干支历法算清楚:从节气切年到可读摘要
java·算法·vue·独立开发·spring boot / spring
Zachery Pole7 小时前
具身智能强化学习(1)引言
算法·机器学习
xuxigifxfh7 小时前
面试记录2026
java·mysql·面试·职场和发展
All for pursuit.7 小时前
【动态规划-11】279.完全平方数
数据结构·c++·算法·leetcode·动态规划
淡海水7 小时前
02-06-原理篇-增量式GC与并发GC
算法·unity·c#·并发·gc·增量
对空六课7 小时前
无头浏览器访问对跳出率的过滤规则
服务器·前端·算法·数据分析
有同事要进步7 小时前
leecode第一题-两数字之和(打卡)
算法
程序员清风8 小时前
二叉搜索树:查找、插入与删除
算法