Letter Combinations of a Phone Number
题意:手机键盘按几个键,到底有多少个输入可能呢?
解法:每出现一个数字,将原来集合拓展即可。
import java.util.ArrayList;
public class Solution134 {
public ArrayList<String> letterCombinations(String digits) {
char[][] nta=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'}
};
ArrayList<String> temp=new ArrayList<String>();
if (digits.length()==0){
temp.add("");
return temp;
}
int number=Integer.parseInt(digits.charAt(0)+"");
for (int i=0;i<nta[number].length;i++){
temp.add(nta[number][i]+"");
}
for (inti=1;i<digits.length();i++){
ArrayList<String>temp2=new ArrayList<String>();
intnum=Integer.parseInt(digits.charAt(i)+"");
for (intj=0;j<temp.size();j++){
for (intk=0;k<nta[num].length;k++){
temp2.add(temp.get(j)+nta[num][k]);
}
}
temp=temp2;
}
return temp;
}
}