算法刷题记录.leetcode17

51 阅读1分钟

17.电话号码的字母组合

数字和字母如何映射

  • 二维数组

暴力的树形结构

image.png

回溯三部曲

确定回溯函数参数

  • index:是记录遍历第几个数字了,就是用来遍历digits的(题目中给出数字字符串),同时index也表示树的深度。

确定终止条件

  • index 等于 输入的数字个数(digits.size)

确定单层遍历逻辑

  • 注意将digits里字符转化整形变量在取查找哈希表。
  • 注意index作用,区别于之前题目中的startIndex.
int digit = digits[index] - '0';        // 将index指向的数字转为int
string letters = letterMap[digit];      // 取数字对应的字符集
for (int i = 0; i < letters.size(); i++) {
    s.push_back(letters[i]);            // 处理
    backtracking(digits, index + 1);    // 递归,注意index+1,一下层要处理下一个数字了
    s.pop_back();                       // 回溯
}