难度:中等

    题目描述:
    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
    给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

    示例:

    1. 输入:"23"
    2. 输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

    解题思路:
    回朔算法

    1. var letterCombinations = function(digits) {
    2. if(digits.length ===0) return []
    3. const map = new Map([
    4. ["2", "abc"],
    5. ["3", "def"],
    6. ["4", "ghi"],
    7. ["5", "jkl"],
    8. ["6", "mno"],
    9. ["7", "pqrs"],
    10. ["8", "tuv"],
    11. ["9", "wxyz"],
    12. ]);
    13. let result = [];
    14. const getResult = (str, index) => {
    15. if (index === digits.length) {
    16. result.push(str);
    17. return;
    18. }
    19. let num = digits[index];
    20. let strs = map.get(num);
    21. for (let i = 0; i < strs.length; i++) {
    22. getResult(str + strs[i], index + 1);
    23. }
    24. };
    25. getResult("", 0);
    26. return result;
    27. };