# 【LeetCode】017.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"].

1、数字对应的按键上是否有未处理的字符，有则加上（1次加上1个），然后继续深度遍历；

2、若本节点上的字符处理完成，返回；

存储得到的字符串；

import java.util.*;
public class Solution {
String[] dict;

public void initDict(){
dict = new String[10];
dict[0] = "0";
dict[1] = "1";
dict[2] = "2abc";
dict[3] = "3def";
dict[4] = "4ghi";
dict[5] = "5jkl";
dict[6] = "6mno";
dict[7] = "7pqrs";
dict[8] = "8tuv";
dict[9] = "9wxyz";
}

public void dfs(int index,int length,String src,String tmp,List<String> ret){
if(index == length){
} else {
for(int i=1;i<dict[src.charAt(index)-'0'].length();i++){
dfs(index+1,length,src,tmp+dict[src.charAt(index)-'0'].charAt(i),ret);
}
}
}

public List<String> letterCombinations(String digits) {
initDict();
List<String> ret = new ArrayList<String>();
if (digits.length() > 0)
dfs(0,digits.length(),digits,new String(),ret);
return ret;
}
}

03-04 3524
04-13 1万+