如图:将数字上字母组合。
思路:每一次将字符串数组与当前数字上字符做组合,返回一个新的字符串数组,然后再用新的字符串数组再去组合,知道所有的数字遍历完为止,过程很简单,注意开始为空的情况,和数字上字母为空的情况。
代码如下:
public static List<String> letterCombinations(String digits) {
char[][] temp=new char[][]{
{},
{'a','b','c'},{'d','e','f'},{'g','h','i'},
{'j','k','l'},{'m','n','o'},{'p','q','r','s'},
{'t','u','v'},{'w','x','y','z'},
{}
};
int n=digits.length();
int[] d=new int[n];
for(int i=0;i<n;i++){
d[i]=Integer.parseInt(String.valueOf(digits.charAt(i)));
}
List<String> l=new ArrayList<String>();
for(int i=0;i<n;i++){
Get(l,d[i],temp);
}
return l;
}
public static void Get(List<String> temp,int index,char[][] t){
List<String> l=new ArrayList<String>();
List<String> tt=new ArrayList<String>(temp);
temp.clear();
System.out.println(t[index].length);
for(int i=0;i<t[index].length;i++){
l.add(String.valueOf(t[index][i]));
}
if(tt.size()==0){
for(int i=0;i<l.size();i++){
temp.add(l.get(i));
}
}else{
for(int i=0;i<tt.size();i++){
for(int j=0;j<l.size();j++){
temp.add(tt.get(i)+l.get(j));
}
}
}
}