C++数据结构与算法——回溯算法分割问题

C++第二阶段——数据结构和算法,之前学过一点点数据结构,当时是基于Python来学习的,现在基于C++查漏补缺,尤其是树的部分。这一部分计划一个月,主要利用代码随想录来学习,刷题使用力扣网站,不定时更新,欢迎关注!

文章目录

  • 一、131.分割回文串
  • 二、93. 复原 IP 地址

一、131.分割回文串

在这里插入图片描述

class Solution {
public:vector<vector<string>> result;vector<string> path;vector<vector<string>> partition(string s) {insertS(s,0);return result;}// 填充函数void insertS(string s,int startIndex){// 结束条件if(startIndex>=s.length()){result.push_back(path);return;}for(int i=startIndex;i<s.length();i++){if(isPart(s,startIndex,i)){path.push_back(s.substr(startIndex,i-startIndex+1));}else{continue;}insertS(s,i+1);path.pop_back();}}// 定义一个判断回文字符串的函数bool isPart(string s,int begin,int end){if(s.length()==1){return true;}while(begin<end){if(s[begin]!=s[end]){return false;}begin++;end--;}return true;}
};

在这里插入图片描述

二、93. 复原 IP 地址

在这里插入图片描述

class Solution {
public:vector<string> result;int count=0;vector<string> restoreIpAddresses(string s) {if(s.size()<4||s.size()>12) return result;insertS(s,0);return result;}void insertS(string s,int stardIndex){// 收集结果if(count==3){// 判断后面的符不符合规则if(isValid(s,stardIndex,s.length()-1)){result.push_back(s);}return;}for(int i= stardIndex;i<s.length();i++){// 判断前面的符不符合规则if(isValid(s,stardIndex,i)){// 符合规则,在哪个位置插入"."s.insert(s.begin()+i+1,'.');count++;insertS(s,i+2);count--;s.erase(s.begin()+i+1);}else{break;}}}bool isValid(string s,int begin,int end){if (begin > end) {return false;}// 左闭右闭// 1. 第一个为0if(s[begin]=='0'&& begin != end) return false;// 2. 有特殊字符int num = 0;for(int i=begin;i<=end;i++){if((s[i]<='9'&&s[i]>='0')){num= num * 10 + (s[i] - '0');}else{return false;}}// 3. 数字不符合区间if(num>255) return false;return true;}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/795648.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法基本概念

算法基本概念 算法的定义 算法是解决特定问题求解步骤的描述&#xff0c;在计算机中表现为指令的有限序列&#xff0c;并且每条指令表示一个或多个操作。 算法的特性 输入&#xff1a;算法具有0个或多个输入输出&#xff1a;算法至少有一个或多个输出有穷性确定性可行性 算…

设计模式(14):命令模式

介绍 将一个请求封装为一个对象&#xff0c;从而使我们可用不同的请求对象客户进行参数化&#xff1b;对请求排队或者记录请求日志&#xff0c;以及支持可撤销的操作。也称之为&#xff1a;动作Action模式&#xff0c;事务transaction模式。 命令模式角色 抽象命令类(Comman…

VS CODE环境安装和hello world

SAP UI5 demo walkthrough tutorial step1 hello word 首先要安装nodejs,然后才能执行下面的操作 nodejs vscode 安装ui5npm install --global @ui5/cli报错解决: idealTree:npm: sill idealTree buildDeps 这个信息说明npm正在构建,如一直停留在这个界面,检查下网络,例如…

Redis常用命令补充和持久化

一、redis 多数据库常用命令 1.1 多数据库间切换 1.2 多数据库间移动数据 1.3 清除数据库内数据 1.4 设置密码 1.4.1 使用config set requirepass yourpassword命令设置密码 1.4.2 使用config get requirepass命令查看密码 二、redis高可用 2.1 redis 持久化 2.1.1 持…

【51单片机入门记录】A/D D/A转换器概述

目录 一、A/D D/A转换器简介 &#xff08;1&#xff09;模数转换器-ADC &#xff08;analogue-to-digital conversion&#xff09; &#xff08;2&#xff09;数模转换器-DAC&#xff08;digital-to-analogue conversion&#xff09; &#xff08;3&#xff09;应用场景 二…

用于AGV物流机器人的爱普生陀螺仪传感器XV7000系列

适用于AGV物流机器人的爱普生陀螺仪传感器XV7000系列:XV7001BB&#xff0c;XV7011BB。以前我们都知道XV7001BB&#xff0c;XV7011BB适用于扫地机器人&#xff0c;其实对于AGV物流机器人来说&#xff0c;XV7000系列生陀螺仪传感器也是其中重要一环。AGV机器人又叫做AGV搬运机器人…

C#手术麻醉信息系统源码,技术框架:Vue,Ant-Design+百小僧开源框架

C#手术麻醉信息系统源码&#xff0c;技术框架&#xff1a;Vue&#xff0c;Ant-Design百小僧开源框架 手术麻醉系统主要用于在手术过程中监测和控制患者的状态&#xff0c;确保手术的顺利进行并保障患者的生命安全。该系统通过一系列先进的医疗设备和技术&#xff0c;为手术患者…

AopContext.currentProxy() 的代理对象错误(未被更新)问题

背景&#xff1a; 原来在springAOP的用法中&#xff0c;只有代理的类才会被切入&#xff0c;我们在controller层调用service的方法的时候&#xff0c;是可以被切入的&#xff0c;但是如果我们在service层 A方法中&#xff0c;调用B方法&#xff0c;切点切的是B方法&#xff0c;…

Java 元素排序(数组、List 集合)

数组元素排序 升序 int[] array {3, 1, 4, 5}; Arrays.sort(array);// 升序排序 System.out.println(Arrays.toString(array)); //输出&#xff1a;[1, 3, 4, 5]降序 可以先将数组元素存入 List 集合&#xff0c;然后集合元素逆序&#xff0c;最后将集合元素写回原数组。&a…

助力第十五届蓝桥杯单片机省一——模块之eeprom

蓝桥杯比赛倒计时第8天 今天写的是蓝桥杯模块————AT24C02,主要讲一下如何对一个整型的数据进行存储&#xff0c;相信各位省一选手对一个char型的数组读取已经了如指掌了&#xff0c;所以就不再这里进行讲解了。 一、eeprom写入函数 void write_myepprom(unsigned char a…

JavaScript 事件流

JavaScript与HTML之间的交互是通过事件实现的&#xff0c;而用户与浏览器页面的互动也是通过事件来实现的事件就是文档或浏览器窗口中发生的一些特定的交互瞬间&#xff0c;所以分为两种事件&#xff0c;一是发生在 浏览器对象&#xff08;BOM&#xff09;上的事件&#xff0c;…

【C++】STL--vector

目录 vector的使用 vector的定义 vector iterator的使用 vector空间增长问题 vector增删查改 vector深度剖析及模拟实现 vector核心接口模拟实现 使用memcpy拷贝问题 迭代器失效问题 vector的使用 vector的定义 C中&#xff0c;vector是一个模版&#xff0c;第一个参…

JavaScript实现跑马灯效果

一段简单的代码&#xff0c;实现类似公司大屏幕上“欢迎XX领导莅临指导”&#xff0c;在JavaScript中可以轻松实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head>…

2024.4.5-[作业记录]-day10-CSS 布局模型(层模型)

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 作业 2024.4.5-学习笔记1 CSS定位1.1 相对定位 relative1.2 绝对定位 absolut…

python 进度条如何控制

首先&#xff0c;我们需要创建一个新的python文件&#xff0c;点击工具栏上方的file按钮&#xff0c;然后在弹出的选项中选择新建&#xff0c;找到如图所示的新建python file&#xff0c;创建一个新文件。 按照提示给我们的新文件命名&#xff0c;然后在创建的文件中输入我们需…

C++——位图和布隆过滤器

在C中&#xff0c;哈希这种思想的应用场景有很多&#xff0c;位图就是其中的一种。 位图 位图&#xff1a;位图是一种哈希思想的产物&#xff0c;可以通过它来对数据进行快速的查找的方法&#xff0c;在位图中&#xff0c;有2种状态来表示在或者不在&#xff0c;即1/0。 位图…

刷题日记——由浅入深的大数加法(高精度加法)

例题 代码 #include <cstdio>int main(){long long a,b;scanf("%lld %lld",&a,&b);printf("%lld\n",ab);}例题——高精度加法 编程计算&#xff1a;12345678912345678912121211231212121212121212121222222111112121&#xff1f; 分析 加…

来个自定义的电子木鱼吧

<!DOCTYPE html> <html><head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, initial-scale1"><title>自定义木鱼</title> </head> <body style"background-…

题目:小怂爱水洼(蓝桥OJ 4234)

问题描述&#xff1a; 解题思路&#xff1a; 记录每个格子的水量&#xff0c;再比较找最大水量。计算水量使用dfs。 注意点&#xff1a;属于同一个水洼的每个格子&#xff0c;只需要计算一次dfs就好了&#xff0c;因为每个格子的dfs都相同 。 代码&#xff1a; #include <b…

VLAN间路由

部署了VLAN的传统交换机不能实现不同VLAN间的二层报文转发&#xff0c;因此必须引入路由技术来实现不同VLAN间的通信。VLAN路由可以通过二层交换机配合路由器来实现&#xff0c;也可以通过三层交换机来实现&#xff1b; VLAN间通讯限制 每个VLAN都是一个独立的广播域&#xff…