-
Notifications
You must be signed in to change notification settings - Fork 46
Open
Description
/**
* @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;
};
解题思路:
我们可以从根开始,进行字符串的相加,一直加到叶子节点停止,此时得到一个符合条件的组合字符串
如红线所标注的一样。如果整个过程是递归进行的。那跑一遍之后,我们将得到所有可能的组合
leetcode原题地址:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/description/