又一题简单的回溯法
这是一道leetcode的中等题,不过搞清楚回溯法之后,就是简单的回溯法问题
题目是输入数字字符串,输出9键输入法的所有可能字母组合。
码一下自己的答案:
class Solution {
StringBuilder t = new StringBuilder();
List<String> ans = new ArrayList<String>();
Map<Character, String> charStringMap = new HashMap<>();
public List<String> letterCombinations(String digits) {
charStringMap.put('2',"abc");
charStringMap.put('3',"def");
charStringMap.put('4',"ghi");
charStringMap.put('5',"jkl");
charStringMap.put('6',"mno");
charStringMap.put('7',"pqrs");
charStringMap.put('8',"tuv");
charStringMap.put('9',"wxyz");
dfs(0, digits);
return ans;
}
public void dfs(int cur, String digits) {
if (cur == digits.length()) {
if(cur != 0){
ans.add(t.toString());
}
return;
}
char curNum = digits.charAt(cur);
String num2String = charStringMap.get(curNum);
for(char currentChar : num2String.toCharArray()){
t.append(currentChar);
dfs(cur + 1, digits);
t.deleteCharAt(t.length() - 1);
}
}
}
原题链接:电话号码的字母组合






Comments NOTHING