Appearance
017 电话号码的字母组合
code
javascript
/**
* @param {string} digits
* @return {string[]}
*/
var letterCombinations = function(digits) {
let result = [];
const alpha_map = {
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'],
}
function backtrace(temp, ind){
if(temp.length === digits.length){
result.push(temp);
return;
}
let digit = alpha_map[digits.charAt(Number(ind))];
for(let i = 0; i < digit.length; i++){
backtrace(temp + digit[i], (ind + 1));
}
}
backtrace('', 0);
return result;
};总结
- 回溯真的很反直觉,说是剪枝实际上是断路,我感觉每一个共同结构都看不明白,提不出来啥,找猫画虎
- 但这个似乎和遍历,子集哪个有点像
- 感觉不太容易出这个题,不是很优雅似乎
- 注意不回退,然后字符串每一圈改内存的问题
- 刷回溯时候可以注意看一下写一下