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. 电话号码的字母组合
最新推荐文章于 2023-08-25 12:20:00 发布