电话号码的字母组合
一、题目
二、思路
先根据题目要求构造出一个数字和字符串的映射map, 对目标字符串进行DFS深搜和回溯,递归出口为深搜的长度Index等于目标字符串digits的长度。如果可以深搜,从 map 中取出当前目标字符串下标的字符(digits[index])所映射的字符串,再在该字符串中进行同样的深搜和回溯。
三、实现代码(Java)
class Solution {
public List<String> letterCombinations(String digits) {
List<String> res = new LinkedList<String>();
if(digits.length() == 0) {
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");
traceback(res,digits,0,map,new StringBuffer());
return res;
}
public void traceback(List<String> res,String digits,int index,Map<Character,String> map,StringBuffer s) {
if(index == digits.length()) {
res.add(s.toString());
} else {
char ch = digits.charAt(index);
String tmp = map.get(ch);
for(int i = 0;i<tmp.length();i++) {
s.append(tmp.charAt(i));
traceback(res,digits,index+1,map,s);
s.deleteCharAt(index);
}
}
}
}
坚持分享,坚持原创,喜欢博主的靓仔靓女们可以看看博主的首页博客!
您的点赞与收藏是我分享博客的最大赞赏!
博主博客地址: https://blog.csdn.net/weixin_43967679