当前位置: 首页 > news >正文

力扣17题 电话号码的字母组合

 归类:回溯算法

回溯三部曲:

1.确定回溯函数参数

首先需要一个字符串s来收集叶子节点的结果,然后用一个字符串数组result来保存起来,这两个变量依然定义为全局。

参数指定是有题目中给的string  digits,然后还有一个参数就是int型的index。

index是用来记录遍历第几个数字了,就是用来遍历digits的,同时index也表示树的深度。

vector<string> result;
string s;
void backtracking(const string& digits, int index)

2.确定终止条件

叶子节点是用来收集的结果集,终止条件就是如果index等于输入的数字个数(digits.size)了,index是用来遍历digits的,然后收集结果,结束

本层递归。

if (index == digits.size()) {result.push_back(s);return;
}
3.确定单层遍历逻辑
首先取index指向的数字,并找到对应的字符集
然后for循环来处理这个字符集
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();                       // 回溯
}
class Solution {
private:const string letterMap[10] = {"", // 0"", // 1"abc", // 2"def", // 3"ghi", // 4"jkl", // 5"mno", // 6"pqrs", // 7"tuv", // 8"wxyz", // 9};
public:vector<string> result;string s;void backtracking(const string& digits, int index) {if (index == digits.size()) {result.push_back(s);return;}int digit = digits[index] - '0';        // 将index指向的数字转为intstring 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();                       // 回溯}}vector<string> letterCombinations(string digits) {s.clear();result.clear();if (digits.size() == 0) {return result;}backtracking(digits, 0);return result;}
};


http://www.wxhsa.cn/company.asp?id=4922

相关文章:

  • 萤火虫文旅年票、为什么能做到低至4.2元一张景区门票、还能高达50%的毛利润?
  • ubuntu服务器docker容器安装nacos
  • PWN手的成长之路-02-r3m4ke
  • SAP 采购订单税率及含税金额取数
  • 深入解析:Linux x86 stability和coredump
  • 9.15更新linux命令
  • Jenkins 容器和 Kubernetes Agent
  • LGP7916 [CSP-S 2021] 交通规划 学习笔记
  • 详细介绍:【Kubernetes】常见面试题汇总(十四)
  • 萤火虫文旅年票、为何能成为撬动万亿文旅市场的利器
  • 教育行业API安全最佳实践:全知科技以国家标准引领数据防护新范式
  • Codecademy Pro是否值得?2023年深度评测与技术特性解析
  • Qt处理USB摄像头开发说明与QtMultimedia与V4L2融合应用
  • 实用指南:【性能优化需要关注的参数——Batches】
  • 禁止指定软件联网
  • 详细介绍:C++(静态函数)
  • 2025.9.15日软件工程学习日志
  • RocketMQ快速实战及核心概念
  • 【南方科技大学主办】第五届电气工程与机电一体化手艺国际学术会议(ICEEMT 2025)
  • 为什么不建议在 Docker 中跑 MySQL?
  • reLeetCode 热题 100-1 指针283. 移动零 - MKT
  • 解决c# DocX生成的word文档wps打开排版外边距错乱微软office正常问题
  • The 2025 ICPC Asia East Continent Online Contest (II)
  • 工厂方法模式(Factory Method) - 指南
  • 拾忆录
  • 从零搭建RAG应用:跳过LangChain,掌握文本分块、向量检索、指代消解等核心技术实现
  • python高阶技巧
  • 机器视觉之图像处理篇 - 指南
  • 尝试hikari和jdbctemplate
  • 配置Nginx根据IP地址进行流量限制以及返回JSON格式数据