hot100-61电话号码的字母组合

一、题目

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

给出数字和字母的映射,1不对应任何字母。

二、思路

1、通过回溯法,对每个数字依次尝试其对应的所有字母,构建所有可能的组合,直到完成整个字符串的映射。

三、代码

java 复制代码
class Solution {
    private String[] map ={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
    public List<String> letterCombinations(String digits) {
        List<String> res = new ArrayList<>();
        if(digits == null || digits.length()==0){
            return res;
        }
        backtracing(digits,0,new StringBuilder(),res);
        return res;
    }
    public void backtracing(String digits,int index,StringBuilder path,List<String> res){
        //终止条件:当前处理到第index个字符,如果 index == digits.length()表示已经处理完所有的数字,路径完整
        if(index == digits.length()){
            res.add(path.toString());
            return;
        }
        //获取当前数字对应的字母列表
        char digit = digits.charAt(index);//当前数字字符
        String letters = map[digit - '0'];//转为索引
        //尝试当前数字的每一个字母
        for(char c : letters.toCharArray()){
            path.append(c);
            backtracing(digits,index+1,path,res);
            path.deleteCharAt(path.length() - 1);
        }
    }
}
相关推荐
咖啡八杯9 分钟前
文法、BNF与AST
java·设计模式·解释器模式·ast·文法
要开心吖ZSH2 小时前
一文搞懂:JDK 21 虚拟线程 vs N种异步方案,到底该怎么选?
java·数据库·jdk·虚拟线程
guodingdingh7 小时前
软件开发工作问题总结0718
java·开发语言·数据库
咖啡八杯9 小时前
GoF设计模式——解释器模式
java·后端·spring·设计模式
优橙教育9 小时前
5G网优培训 vs Java开发:转行选哪个?
java·开发语言·5g
糖果店的幽灵9 小时前
【DeepAgents 从入门到精通】Context Management 上下文管理
java·人工智能·后端·spring·中间件·langgraph·deepagents
腻害兔10 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:字典、短信、邮件、通知——后台系统的“基础设施四件套“!
java·前端·vue.js·产品经理·ai编程
碎光拾影11 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库
奋发向前wcx11 小时前
y1,y2总复习笔记5 2026.7.19
数据结构·笔记·算法
Miao1213112 小时前
微服务 API 测试实践:海外某民宿平台如何构建模式驱动测试基础设施
java·开发语言