电话号码的字母组合
js
// 【深度遍历 收集叶子节点】
const letterCombinations = (digits) => {
// 空字符串
if (!digits) return []
const res = []
let len = digits.length
const map = {
'2': 'abc',
'3': 'def',
'4': 'ghi',
'5': 'jkl',
'6': 'mno',
'7': 'pqrs',
'8': 'tuv',
'9': 'wxyz'
}
function dfs(str, index) {
// 到达叶子节点,push进结果
if(index === len) return res.push(str)
// 当前数字对应的字母串
const letters = map[digits[index]]
for(let letter of letters) {
// 拼凑字符串,同时深度+1
dfs(str + letter, index + 1)
}
}
dfs('', 0) // 初始传入空字符串和第一层
return res
}