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);
        }
    }
}
相关推荐
Flittly8 小时前
【AgentScope Java新手村系列】(16)从RAG到多路检索
java·spring boot·spring
小兔崽子去哪了8 小时前
Java 生成二维码解决方案
java·后端
人活一口气12 小时前
从JVM调优到MCP协议:Java全栈技术体系深度总结与企业级架构实践
java·spring boot
NE_STOP14 小时前
Vibe Coding -- 完整项目案例实操
java
荣码14 小时前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python
SimonKing14 小时前
Google第三方授权登录
java·后端·程序员
明月光81814 小时前
从一行 @Builder 说起:重新拾起 Java 的 Lombok、注解与 Builder 模式
java
考虑考虑1 天前
Mybatis实现批量插入
java·后端·mybatis
咖啡八杯1 天前
GoF设计模式——中介者模式
java·后端·spring·设计模式
青石路1 天前
记一次多JDK版本问题的排查,一坑套一坑,差点没爬上来
java