Skip to content

电话号码的字母组合

LeetCode-17

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
}

参考