尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

代码随想录Day24_回溯_复原IP.md

代码随想录Day24_回溯_复原IP.md
📅 发布时间:2026/6/19 23:03:51
代码随想录Day24_回溯_复原IP.md

复原IP地址

题目理解

1.给出的是字符串,IP地址在【0,255】之间,字符串转数字;
2.0可以单独出现,但是不能跟数字出现;
3.字符串中要插入'.';
4.字符串的大小范围在4~12之间;
5.不能有除数字外的字母;

思路

首先确定答案类型:vector<string> res,一个用来存单个有效IP地址的字符串str;
1.函数返回值:void,函数参数,传进来的string s;
2.确定终止条件:插入4个'.'后;
3.单层回溯:
for循环遍历树的宽度:每次startIndex后移一位;
树的深度:每次.后移一位。后移两位。

问题

1.怎么在字符串中插入.? s.insert(pos,'neirong')
alt text
if(start>end){return false;}该条件是在处理空的字符串!很难想到这个边界条件。

class Solution {
public:vector<string> res;void backtrack(string& s, int startIndex, int pointNum) {if (pointNum == 3) {if (isValid(s, startIndex, s.size() - 1)) {res.push_back(s);}return;}for (int i = startIndex; i < s.size(); i++) {if (isValid(s, startIndex, i)) {s.insert(s.begin() + i + 1, '.');pointNum++;backtrack(s, i + 2, pointNum);s.erase(s.begin() + i + 1);pointNum--;} else {break;}}return;}bool isValid(const string& s, int start, int end) {if (start > end) {return false;} // 输入:s=101023     输出:10.102.3.if (s[start] == '0' && start != end) {return false;}int sum = 0;for (int i = start; i <= end; i++) {if (s[i] < '0' || s[i] > '9') {return false;}// 255逻辑sum = sum * 10 + (s[i] - '0');if (sum > 255) {return false;}}return true;}vector<string> restoreIpAddresses(string s) {backtrack(s, 0, 0);return res;}
};

求整数数组的所有子集

开始的时候在想每个整数数组都包含一个空的子集如何处理?写出来了但是不知道在哪里处理到了?

class Solution {
public:vector<int>path;vector<vector<int>>  res;void backtrack(vector<int>&nums, int startIndex){res.push_back(path);if(startIndex>=nums.size()){return;}for(int i=startIndex;i<nums.size();i++){path.push_back(nums[i]);backtrack(nums,i+1);path.pop_back();}}vector<vector<int>> subsets(vector<int>& nums) {res.clear();path.clear();backtrack(nums,0);return res;}
};

求存在重复元素的整数数组的子集

事情开始变得诡异起来了
让我再梳理一下事情的发生过程:
复用不存在重复元素的整数数组子集的代码;
其次,结果用set存下来,使用类型转换;
给path排序,发生了:
alt text
换给nums排序程序奇怪地运行起来了。
不懂。

class Solution {
public:vector<int>path;set<vector<int>>  res;void backtrack(vector<int>&nums, int startIndex){res.insert(path);if(startIndex>=nums.size()){return;}for(int i=startIndex;i<nums.size();i++){path.push_back(nums[i]);backtrack(nums,i+1);path.pop_back();//} }vector<vector<int>> subsetsWithDup(vector<int>& nums) {sort(nums.begin(),nums.end());backtrack(nums,0);return vector<vector<int>>(res.begin(),res.end());}
};

相关新闻

  • 11/28
  • Webstorm常用配置
  • 10个免费查重降重工具分享,降AIGC率工具

最新新闻

  • C# 读写INI文件:从编码乱码到跨平台兼容的实战指南
  • 3大技术突破:PaddleOCR如何用AI重塑文档数字化工作流
  • Navicat Mac版终极重置指南:三步实现无限免费试用
  • Anime.js路径动画终极指南:让元素沿着任意轨迹流畅运动
  • BreezySLAM与ROS集成实战:打造完整的机器人SLAM系统
  • 从74LS到74HC:经典逻辑器件系列演进与应用选型指南

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号