class Solution {//回溯思想,一直Try,到頭了再返回
public List<String> letterCombinations(String digits) {
StringBuilder sb = new StringBuilder();
List<String> res = new ArrayList<String>();
if(digits.length()==0||digits==null)
return res;
Map<Character,String> map= new HashMap<Character,String>();
map.put('2', "abc");
map.put('3', "def");
map.put('4', "ghi");
map.put('5', "jkl");
map.put('6', "mno");
map.put('7', "pqrs");
map.put('8', "tuv");
map.put('9', "wxyz");
backtrack(digits,sb,map,res,0);//下標從零開始,對應‘2’的字符串
return res;
}
public static void backtrack(String digits,StringBuilder sb,Map<Character,String> map,List<String> res,int number){
if(sb.length()==digits.length()) {
res.add(sb.toString());
return;
}
String ss=map.get(digits.charAt(number));
for(int i=0;i<ss.length();i++) {
sb.append(ss.charAt(i));
backtrack(digits,sb,map,res,number+1);
sb.deleteCharAt(sb.length() - 1);//這一步很容易寫錯,走完‘9’的W後,刪除W,然後繼續下一個X,依次類推層層返回。
}
}//提交後一次AC
}
17. 電話號碼的字母組合
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.