Skip to content

电话号码的字母组合 #31

@JesseZhao1990

Description

@JesseZhao1990

image


/**
 * @param {string} digits
 * @return {string[]}
 */
var letterCombinations = function(digits) {
    var digitsArray = digits.split('');
    if(digitsArray.length===0) return [];
    var map ={
        "2":"abc",
        "3":"def",
        "4":"ghi",
        "5":"jkl",
        "6":"mno",
        "7":"pqrs",
        "8":"tuv",
        "9":"wxyz"
    }
    
    // 存储收集的结果
    var res = [];
    
    // 其实这些字母所代表的字母组成了一个树,我们顺着每条路径往下加,加到叶子之后,此时就得到了一个符合条件的字符串。放入res中。
    function combineLetters(digitsArray,index,str){
        if(index === digitsArray.length){
            res.push(str);
            return;
        }
        var letters = map[digitsArray[index]].split('');
        for(var i=0;i<letters.length;i++){
            combineLetters(digitsArray,index+1,str+letters[i]);
        }
        return;
    }
    combineLetters(digitsArray,0,"");
    return res;
};

解题思路:

我们可以从根开始,进行字符串的相加,一直加到叶子节点停止,此时得到一个符合条件的组合字符串
如红线所标注的一样。如果整个过程是递归进行的。那跑一遍之后,我们将得到所有可能的组合

image

leetcode原题地址:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/description/

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions