本文主要是介绍LeetCode17之电话号码的字母组合,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
- 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母
- 示例
输入:digits = “23”
输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]
解法
private static List<String> findTelNumberCombination(String str) {List<String> resultList=new ArrayList<>();if (str==null||str.isEmpty())return resultList;StringBuilder builder=new StringBuilder();String[] numberStrings={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};findValidCombination(str,numberStrings,builder,resultList,0);return resultList;}/**** @param str* @param builder* @param resultList* @param index*/private static void findValidCombination(String str, String[]numberStrings,StringBuilder builder, List<String> resultList, int index) {// 递归退出条件if (index==str.length()){resultList.add(builder.toString());return;}// 获取号码位置int pos=str.charAt(index)-'0';// 获取对应字符String numberStr=numberStrings[pos];// 拼接for (int i=0,len=numberStr.length();i<len;i++){builder.append(numberStr.charAt(i));findValidCombination(str,numberStrings,builder,resultList,index+1);// 删除无效元素builder.deleteCharAt(builder.length()-1);}}
这篇关于LeetCode17之电话号码的字母组合的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!