leetcode -- Letter Combinations of a Phone Number

Given a digit string, return all possible letter combinations that the number could represent.

A mapping of digit to letters (just like on the telephone buttons) is given below.

Input:Digit string "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
解:DFS 递归 (需多练习)
 1 public ArrayList<String> letterCombinations(String digits) {
 2         // Start typing your Java solution below
 3         // DO NOT write main() function
 4         ArrayList<String> result = new ArrayList<String>();
 5         if(digits.length() == 0){
 6             result.add("");            
 7             return result;
 8         }
 9             
10         
11         String[] trans = new String[]{"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
12         
13         convert(trans, result, 0, digits, "");
14         return result;
15     }
16     
17     public void convert(String[] trans, ArrayList<String> result, int depth, String digits, String tmp){
18         if(depth == digits.length()){
19             result.add(tmp);
20             return;
21         }
22         int index = digits.charAt(depth) - 48;
23         for(int i = 0; i < trans[index].length(); i++){
24             tmp += trans[index].charAt(i);
25             convert(trans, result, depth + 1, digits, tmp);
26             tmp = tmp.substring(0, tmp.length() - 1);
27         }
28     }

 

转载于:https://www.cnblogs.com/feiling/p/3185238.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值