2021.11.25 - SX08-05.电话号码的字母组合

1. 题目

在这里插入图片描述

2. 思路

(1) 回溯法

  • 利用HashMap预先存储数字对应的字母,然后利用回溯法遍历树即可。

3. 代码

import java.util.*;

public class Test {
    
    
    public static void main(String[] args) {
    
    
    }
}

class Solution {
    
    
    private List<String> res;
    private String digits;
    private Map<Character, String> map;
    private StringBuilder stack;

    public List<String> letterCombinations(String digits) {
    
    
        res = new ArrayList<>();
        if (digits.length() == 0) {
    
    
            return res;
        }
        this.digits = digits;
        map = new HashMap<Character, String>() {
    
    {
    
    
            put('2', "abc");
            put('3', "def");
            put('4', "ghi");
            put('5', "jkl");
            put('6', "mno");
            put('7', "pqrs");
            put('8', "tuv");
            put('9', "wxyz");
        }};
        stack = new StringBuilder();
        backtrack(0);
        return res;
    }

    private void backtrack(int index) {
    
    
        if (stack.length() == digits.length()) {
    
    
            res.add(stack.toString());
            return;
        }
        String str = map.get(digits.charAt(index));
        for (int i = 0; i < str.length(); i++) {
    
    
            stack.append(str.charAt(i));
            backtrack(index + 1);
            stack.deleteCharAt(stack.length() - 1);
        }
    }
}

おすすめ

転載: blog.csdn.net/qq_44021223/article/details/121539516