解题思路
此题可以用递归的方法
从上一个数字往下递归,形成树的结构
用String的话不用删除原先加入的字母,比较方便,因为String是复制一个备份到函数中,不会改变原来的String
用StringBuilder的话在结束递归后得把加入的字母删除
代码
下面展示一些 内联代码片
。
class Solution {
ArrayList<String>ans=new ArrayList<>();
String []numberlist=
{"",
"",
"abc",
"def",
"ghi",
"jkl",
"mno",
"pqrs",
"tuv",
"wxyz"
};
public List<String> letterCombinations(String digits) {
if(digits.length()==0)
return ans;
String s=new String();
//此处要进入递归函数
findCombination(s,0,digits);
return ans;
}
public void findCombination(String s,Integer count,String digits)
{
if(count==digits.length())
{
ans.add(s);
return;
}
char number=digits.charAt(count);//获取数字
Integer numb=number-'0';
String str=numberlist[numb];
for(int i=0;i<str.length();i++)
{
findCombination(s+str.charAt(i),count+1,digits);
}
}
}