这种题目一般用递归(就是for循环的层数不固定)
主要ArrayList的大小用size()方法,获取某个元素用get()方法
ArrayList<String> rst=new ArrayList<String>();
if (digits.length()==0)
{
rst.add("");
return rst;
}
ArrayList<String> sub=letterCombinations(digits.substring(1));
String[] mapping=new String[12];
mapping[1]="1"; mapping[2]="abc";mapping[3]="def";
mapping[4]="ghi";mapping[5]="jkl";mapping[6]="mno";
mapping[7]="pqrs";mapping[8]="tuv";mapping[9]="wxyz";
mapping[10]="*";mapping[0]="0";mapping[11]="#";
int index,headlen,i,j;
String head,tmp;
if(digits.charAt(0)=='*')
index=10;
else if(digits.charAt(0)=='#')
index=11;
else
index=digits.charAt(0)-'0';
head=mapping[index];
headlen=head.length();
for(i=0;i<headlen;i++)
for(j=0;j<sub.size();j++)
{
tmp=head.substring(i,i+1)+sub.get(j);
rst.add(tmp);
}
return rst;
}