题目:
一看到这道题,我们一般都会想到一个结构——树
从树的角度去看的话,这道题一下子就清晰明了起来
虽然我在代码中使用的是list,但是却有着tree的思想在其中
请看代码:
class Solution {
public List<String> letterCombinations(String digits) {
List<String> res=new ArrayList<String>();
//设置每个数字所对应的字符串
String []str={ " ", "", "abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
int n=digits.length();
int i=0;
while(i<n){
int j=digits.charAt(i)-'0';
String temp=str[j];
if(j==1) continue;
//第一个数进来的时候,res中没有数据,所以进行特殊处理
if(res.size()==0){
int k=0;
while(k<temp.length())
res.add(temp.charAt(k++)+"");
}else {
String tempStr="";
int tempLength=res.size();
//将list中原有的每一个字符串取出,然后删除他,再将该字符串加上新增的字符,重新加入到字符串中
for(int k=0;k<tempLength;k++){
tempStr=res.get(0);
res.remove(tempStr);
int l=0;
while(l<temp.length())
res.add(tempStr+temp.charAt(l++));
}
}
i++;
}
return res;
}
}
变量名取得比较随便,请大家见谅
如果有疑问的话,可以在评论提出,大家一起探讨一下