回溯法3

发布于 2024-01-01  306 次阅读


又一题简单的回溯法

这是一道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);
        }
    }
}

原题链接:电话号码的字母组合