您的位置:首页 > 其它

17. Letter Combinations of a Phone Number

2016-01-22 11:36 218 查看

Letter Combinations of a Phone Number

Input:Digit string “23”

Output: [“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].


使用回溯法:

public class Solution {
List<String> list; //需要全局的

public List<String> letterCombinations(String digits) {

list=new ArrayList<String>();
if(digits.length()==0) return list;

backTrack(digits,"",0);  //digits第一个数字
return list;
}

void backTrack(String digits,String letter,int index){

if(index>=digits.length()){
list.add(new StringBuilder(letter).toString());
return;
}

int num = digits.charAt(index) - '2';  //键盘数字、字母是从2开始的

int end;
if(num==5||num==7) end=4;  //数字7和9是四个字母
else end=3;

for(int i=0;i<end;i++){
char c;
if(num<5) c=(char)('a'+(num*3+i));
else if(num==5) c=(char)('p'+i);  //7
else if(num==6) c=(char)('t'+i);  //8
else c=(char)('w'+i);             //9

String newLetter = new StringBuilder(letter).toString();
backTrack(digits,letter+c,index+1);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: