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

代码训练营 Day24 | 93.复原IP地址 |78.子集

93.复原IP地址

1. 怎么模拟切割线,如何固定切割线

   1. startindex就是我们分割线,它控制着下一层递归里面从哪里开始

   2. 从那里开始分割线就在那里

2. 如何去判断子串

伪代码

``` c++ 
vector<string>result;// 递归函数的参数和返回值
void backtracking(s,startindex,pointSum){// 递归终止条件,ip地址一共有三个点,如果已经有三个点了说明已经完成了可以返回答案if(pointSum == 3){// 对ip地址最后一段进行合法判断,isvalid传递的区间是[]左闭右闭区间if(isvalid(s,startindex,s.size()-1)){// 合法的添加到数组result.push_back(s);}return;}// 单层搜索逻辑for(i=startindex,i<s.size(); i++){// 检查切割的子串,是否合法; [startindex,i]是切割的子串if(isvalid(s,startindex,s.size())){s.insert(s.begin()+i+1,'.')// 点的数量加1pointSum += 1;// 递归; 这里是i+2是因为有个点,所以想要找到下一个区间开始的字母要+2backtracking(s,i+2,pointSum)// 回溯s.erase(s.begin()+i+1);pointSum -= 1;}}
}

运行代码

class Solution(object):def isvalid(self,s,start,end):# is invalid intervalif start > end:return False# make sure first number is not zeroif s[start] == '0' and start != end:# if there is only one 0, it's ok; but more than one number is ilegalreturn False        num = 0for i in range(start,end+1):# if it's not number if not s[i].isdigit():return False# every time num *10, to make to 255num = num * 10 + int(s[i])# make sure our number is less than 255if num > 255:return False# otherwise return Truereturn Truedef backtracking(self,s,startindex,current,pointSum,result):# recursion stop conditionif pointSum == 3:# make sure our string is validif self.isvalid(s,startindex,len(s)-1):# add our final ip address to currentcurrent += s[startindex:]# append to final result setresult.append(current)return# recursion logic for each levelfor i in range(startindex,len(s)):# check the string is validif self.isvalid(s,startindex,i):sub = s[startindex:i+1]# recursionself.backtracking(s,i+1,current+sub+'.',pointSum+1,result)else:breakdef restoreIpAddresses(self, s):""":type s: str:rtype: List[str]"""result = []self.backtracking(s,0,"",0,result)return result

78.子集

1. 这题并不是到叶子节点收获结果

2.  因为是组合[1,2]和[2,1]是一样的

3.  在子集问题里面每个节点里面就是我们要收集的结果

class Solution(object):def backtracking(self,nums,strartindex,path,result):# collect our result setresult.append(path[:])# recursion end conditionif strartindex >= len(nums):# we finished all the saerchreturn# recursion for each levelfor i in range(strartindex,len(nums)):# add our number into arraypath.append(nums[i])# recursionself.backtracking(nums,i+1,path,result)# backtrackingpath.pop()def subsets(self, nums):""":type nums: List[int]:rtype: List[List[int]]"""result = []self.backtracking(nums,0,[],result)return result

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • HTML5好看的花店商城源码1
  • 18054 输出不同的数
  • Llama 3.1大模型的预训练和后训练范式解析
  • 各种各样的正则表达式
  • 筑牢数字防线:深信达MCK与SPN软件的勒索病毒防护策略
  • ansible自动化运维项目
  • 模拟网络丢包常用方法以及工具
  • 充电宝哪个品牌好?盘点最推荐十大耐用充电宝品牌!
  • Chatgpt人工智能对话系统 可进行在线交互和对话 带完整的安装代码包以及搭建部署教程
  • OpenCV结构分析与形状描述符(7)计算轮廓的面积的函数contourArea()的使用
  • 如何在3D无序抓取中应用深度学习算法?
  • 鼠标纵向滑动的横向滚动页面
  • 计算机网络27——Linux1
  • 客户端时间和服务器时间的区别
  • 如何编写测试用例?
  • [iOS]Core Data浅析一 -- 启用Core Data
  • Cookie 在前端中的实践
  • Git学习与使用心得(1)—— 初始化
  • iOS | NSProxy
  • Java,console输出实时的转向GUI textbox
  • Javascript弹出层-初探
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • 从零开始学习部署
  • 搭建gitbook 和 访问权限认证
  • 回流、重绘及其优化
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 使用Gradle第一次构建Java程序
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 做一名精致的JavaScripter 01:JavaScript简介
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • # Redis 入门到精通(一)数据类型(4)
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • (1) caustics\
  • (16)Reactor的测试——响应式Spring的道法术器
  • (31)对象的克隆
  • (4) PIVOT 和 UPIVOT 的使用
  • (java)关于Thread的挂起和恢复
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • .gitignore不生效的解决方案
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .net连接MySQL的方法
  • .NET中winform传递参数至Url并获得返回值或文件
  • [ C++ ] 类和对象( 下 )
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • [<事务专题>]
  • [ACTF2020 新生赛]Include
  • [Android]Tool-Systrace
  • [bzoj1912]异象石(set)
  • [EMWIN]FRAMEWIN 与 WINDOW 的使用注意
  • [Go WebSocket] 多房间的聊天室(三)自动清理无人房间
  • [JavaEE系列] wait(等待) 和 notify(唤醒)
  • [Linux安全运维] OpenVPN部署
  • [MSSQL]GROUPING SETS,ROLLUP,CUBE初体验