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);
        }
    }
}
相关推荐
POLITE32 小时前
Leetcode 76.最小覆盖子串 JavaScript (Day 6)
javascript·算法·leetcode
jackyrongvip2 小时前
10个动画介绍递归(用Gemin3生成)
数据结构·递归·gemin3
寂寞旅行2 小时前
java敏感词过滤(sensitive-word)
java·开发语言·word
90后小陈老师2 小时前
Java项目接入AI大模型的四种方式
java·开发语言·人工智能
hunjinYang2 小时前
使用嵌入式 Tomcat 创建Java Web应用程序
java·tomcat
Godson_beginner2 小时前
Elasticsearch 学习笔记
java·大数据·elasticsearch·搜索引擎
2501_946675642 小时前
Flutter与OpenHarmony打卡步进器组件
java·javascript·flutter
莓有烦恼吖2 小时前
基于AI图像识别与智能推荐的校园食堂评价系统研究 05-审核机制模块
java·服务器·python
开开心心就好2 小时前
OCR识别工具可加AI接口,快捷键截图翻译便捷
java·网络·windows·随机森林·电脑·excel·推荐算法