日常生活的交流与学习

首页 新随笔 联系 管理
export {};

const result = letterCombinations("23");
console.log(result);


function letterCombinations(digits: string) {
  const map:string[] = [
    "",
    "",
    "abc",
    "def",
    "ghi",
    "jkl",
    "mno",
    "pqrs",
    "tuv",
    "wxyz",
  ];
  // 没考虑特殊情况,为空为1的情况,这里可以加上这些情况
  // 结果集
  const res:string[] = [];
  // 路径集
  const path:string[] = [];

  backtracking(digits, digits.length,0);
  return res;

  function backtracking(digits:string, depth:number,h:number) {
    // 路径的长度等于深度,则表示遍历到叶子结点,然后返回结果
    if (path.length === depth) {
      res.push(path.join(''));
      return;
    }

    // for循环是横向遍历
    // for循环也可以理解成一个取值(或选择)的过程
    for (let v  of map[Number.parseInt(digits[h])]) {
      path.push(v)
      backtracking(digits,depth,h+1) //递归
      path.pop() //回溯
    }
  }
}
posted on 2022-10-24 11:23  lazycookie  阅读(41)  评论(0编辑  收藏  举报