DFS
深度优先搜素
/**
* @param {string} digits
* @return {string[]}
*/
var letterCombinations = function(digits) {
var ans = [];
var num = {
'2': ['a','b','c'],
'3': ['d','e','f'],
'4': ['g','h','i'],
'5': ['j','k','l'],
'6': ['m','n','o'],
'7': ['p','q','r','s'],
'8': ['t','u','v'],
'9': ['w','x','y','z']
}
if(digits.length == 0){
return [];
}
const dfs = function(current,i){
if(i > digits.length - 1){
ans.push(current);
return;
}
const nums = num[digits[i]];
for(nu of nums){
dfs(current + nu, i+1)
}
}
dfs('',0);
return ans;
};
广度优先搜索
var letterCombinations = function(digits) {
// 广度优先搜索
var ans = [];
var num = {
'2': ['a','b','c'],
'3': ['d','e','f'],
'4': ['g','h','i'],
'5': ['j','k','l'],
'6': ['m','n','o'],
'7': ['p','q','r','s'],
'8': ['t','u','v'],
'9': ['w','x','y','z']
}
if(digits.length == 0){
return [];
}
ans.push('');
for(var i = 0; i < digits.length; i++){
var kk = num[digits[i]];
var len = ans.length;
for(var j = 0; j < len; j++){
var count = ans.shift();
for(k of kk){
ans.push(count + k);
}
}
}
return ans;
};