这种题目一般用递归(就是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;
}
本文介绍了一种使用递归算法解决电话号码对应的字母组合问题的方法。通过解析电话按键与字母的映射关系,并利用ArrayList存储所有可能的组合,实现了一个灵活且高效的解决方案。
556

被折叠的 条评论
为什么被折叠?



