首页 > 其他 > 详细

LeetCode-17:电话号码的字母组合

时间:2020-05-01 09:02:57      阅读:53      评论:0      收藏:0      [点我收藏+]

问题描述如下图:

技术分享图片

 

 

问题重述:给定一个由若干个数字组成的字符串,根据图中每个数字所代表的字母,输出该数字字符串表示的所有的字母组合。

解决方法:回溯,代码参考了LeetCode的官方题解。

代码如下:

 1 class Solution {
 2     String[] phone = {"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
 3     
 4     List<String> output = new ArrayList<>(); //结果集
 5 
 6     /**
 7      * 回溯
 8      * @param combination 已经走过的路径
 9      * @param nextDigits 下一步可供选择的路径,本题中nextDights是接下来数字字符串中的数字
10      */
11     public void backtrack(String combination, String nextDigits){
12         if(nextDigits.length() == 0) { //走到最后一步,没有路径可走时候,结束
13             output.add(combination);
14         }else{
15             char digit = nextDigits.charAt(0); //取出开头的数字,得到其对应的字符串
16             String letters = phone[digit - ‘2‘];
17             for(int i = 0; i < letters.length(); i++){
18                 char letter = phone[digit - ‘2‘].charAt(i); //取出第i个字符,作为当前步骤的选择,并基于该路径
19                 backtrack(combination + letter, nextDigits.substring(1)); //进行下一步的回溯
20             }
21         }
22     }
23 
24     public List<String> letterCombinations(String digits) {
25         if (digits.length() != 0)
26             backtrack("", digits);
27         return output;
28     }
29 }

 

LeetCode-17:电话号码的字母组合

原文:https://www.cnblogs.com/zhang-yi/p/12812263.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!