Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

电话号码的字母组合 #31

Open
JesseZhao1990 opened this issue Jul 5, 2018 · 0 comments
Open

电话号码的字母组合 #31

JesseZhao1990 opened this issue Jul 5, 2018 · 0 comments

Comments

@JesseZhao1990
Copy link
Owner

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/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant