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);
        }
    }
}
相关推荐
步行cgn7 小时前
Spring c 命名空间注入详解
java·后端·spring
明月_清风7 小时前
Maven 到底是什么?一篇文章搞懂 Java 项目构建与依赖管理
java·后端·maven
aramae7 小时前
MySQL复合查询(8)
java·c语言·开发语言·后端·算法
Rain的Java大神之路8 小时前
如何快速上传10G文件
java·spring boot·redis·后端·mysql·spring cloud·面试
淡海水9 小时前
13-04-面试-源码级深度追问链
数据结构·unity·面试·c#·游戏引擎·源码·il2cpp
Wang's Blog9 小时前
Java 接入Redis: 通用命令与键管理
java·服务器·redis
Wang's Blog9 小时前
Java 接入Redis: 列表集合与有序集合操作命令
java·服务器·redis
Logic1019 小时前
C语言/数据结构位运算题解:异或XOR找出时尚聚会中的“独特颜色“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
Ivanqhz9 小时前
SVD++算法
java·服务器·网络·深度学习·神经网络
qq_25183645710 小时前
springboot vue3 开发实现 拼豆管理系统
java·开发语言·ai编程