方法一:暴力破解使用for循环一直遍历
var letterCombinations = function(digits) {
if(digits.trim().length===0)return [];
let arr = [
[],[],['a','b','c'],['d','e','f'],
['g','h','i'],['j','k','l'],['m','n','o'],
['p','q','r','s'],['t','u','v'],['w','x','y','z']
]
let ans = [];
for(let i=0;i<digits.length;i++){
if(i===0){
for(let j=0;j<arr[digits[i]].length;j++){
ans.push(arr[digits[i]][j]);
}
}else{
let len = ans.length;
for(let k=0;k<len;k++){
let shift = ans.shift();
for(let g=0;g<arr[digits[i]].length;g++){
ans.push(shift+arr[digits[i]][g]);
}
}
}
}
return ans;
};
方法二:回溯
var letterCombinations = function(digits) {
if(digits.trim().length===0)return [];
if(digits.trim().length===0)return [];
let arr = [
[],[],['a','b','c'],['d','e','f'],
['g','h','i'],['j','k','l'],['m','n','o'],
['p','q','r','s'],['t','u','v'],['w','x','y','z']
]
let ans = [];
function backtrack(idx,str){
if(idx===digits.length){
ans.push(str);
}else{
let temp = arr[digits[idx]];
for(let i=0;i<temp.length;i++){
backtrack(idx+1,`${str}${arr[digits[idx]][i]}`);
}
}
}
backtrack(0,'');
return ans;
};