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

周口网站制作四川seo整站优化吧

周口网站制作,四川seo整站优化吧,用wordpress还是php,网站建设与规划的书力扣日记:【回溯算法篇】93. 复原 IP 地址 日期:2023.1.28 参考:代码随想录、力扣 93. 复原 IP 地址 题目描述 难度:中等 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0&…

力扣日记:【回溯算法篇】93. 复原 IP 地址

日期:2023.1.28
参考:代码随想录、力扣

93. 复原 IP 地址

题目描述

难度:中等

有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。

例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “192.168@1.1” 是 无效 IP 地址。
给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 ‘.’ 来形成。你 不能 重新排序或删除 s 中的任何数字。你可以按 任何 顺序返回答案。

示例 1:

输入:s = “25525511135”
输出:[“255.255.11.135”,“255.255.111.35”]

示例 2:

输入:s = “0000”
输出:[“0.0.0.0”]

示例 3:

输入:s = “101023”
输出:[“1.0.10.23”,“1.0.102.3”,“10.1.0.23”,“10.10.2.3”,“101.0.2.3”]

提示:

  • 1 <= s.length <= 20
  • s 仅由数字组成

题解

class Solution {
public:vector<string> results;string path = "";   vector<string> restoreIpAddresses(string s) {backtracking(s, 0, 0);return results;}int validInt(string s) {// 0xx 异常情况if (s.size() > 1 && s[0] == '0')  return -1;    // 注意这里是'0'啊!!!if (s.size() >= 4)   return -1;  // 四位数,则一定无效int num = stoi(s);if (num >=0 && num <= 255)  return num;return -1; // 其他情况返回-1表示invalid}// 参数:count为path中已有"."的数量void backtracking(string s, int startindex, int count) {// 终止条件:count达到3if (count == 3) {// 直接对最后一个值进行判断(当"."有3个了,剩余的就是最后一个值了string sub = s.substr(startindex, s.size() - startindex);if (validInt(sub) != -1) {  // 最后一个值有效path += sub;results.push_back(path);  // 添加之后记得回溯!!!path.resize(path.size() - sub.size());}return; // 无效则直接返回}// for 循环横向遍历 [startindex, i]表示截取的元素for (int i = startindex; i < s.size(); i++) {// 如果剩余的字符个数不足使ip达到四个数,直接return(这个也可以写在条件里)if (s.size() - i - 1 < 4 - count - 1)   return;// count 在进入下一层时才会+1// 截取当前元素并转换string sub = s.substr(startindex, i - startindex + 1);int num = validInt(sub);// 如果当前值无效,直接return,不需再遍历当前层(后面都无效)if (num == -1) return;// 如果值有效path += sub + ".";// 递归backtracking(s, i + 1, count + 1);  // startindex指向i下一个元素,count + 1 表示"."多了一个// 回溯path.resize(path.size() - (sub.size() + 1));  // 删除sub + "."}}
};

复杂度

时间复杂度: O(3^4),IP地址最多包含4个数字,每个数字最多有3种可能的分割方式,则搜索树的最大深度为4,每个节点最多有3个子节点。
空间复杂度: O(n)

by 代码随想录

思路总结

  • 本题也是一道切割类型的题目,“切割”思路(截取、纵向递归、横向for遍历)可类比131. 分割回文串。

  • 首先关键也是要转换为组合问题(得到树状结构),这里我对示例3(即s=“101023”)进行模拟构建出树状图

  • 在这里插入图片描述

  • 从树状图总结规律:

    • 参数:首先根据 131. 分割回文串的截取思路,这里还是需要一个startindex来表示截取的起始位置;除此之外,定义一个count表示截取的次数(path中"."的数量),见下方。
    • 终止条件:当我们截取了三次(即添加了三个".")之后,实际上就完成了分割(得到四个值了),此时path中已经添加了前三个有效值,因此在终止条件处对直接对最后一个值进行判断,如果剩余的字符能构成一个有效值,则path为有效的ip地址,可添加入results中(这里尤其要注意path添加了最后一个值后要回溯,即弹出该值!!!)
    • for 横向遍历:
      • 基础:每次遍历截取[startindex, i]的元素作为当前值(节点)。
      • 剪枝:这里观察图中“剩余值不足,不再遍历”的情况,表示剩余的字符个数不足以使得ip地址达到四个数(如对“10.1023”取102后,剩余3,而构成ip地址还需要两个值,所以不足。用count记录当前path中已有的值的个数,则此剪枝条件可表示为
         if (s.size() - i - 1 < 4 - count - 1)   return;// count 在进入下一层时才会+1
        
      • 至于开始递归的条件,即当前值需有效才能放入path并递归截取后面的元素(类比131. 分割回文串中需为回文串才处理节点并开始递归)——因此将截取的元素进行s->int转换并判断转换是否有效:
        • 如果值无效,则由图可知,后面都无效,不需要再遍历当前层,直接return;
        • 值有效的话,便是处理节点(添加值)、递归、回溯:注意path字符串添加时可直接用+,但是回溯删除时,得用resize()erase();递归时startindex指向i的下一个值,而count也要+1,表示path多添加了一个值(多了一个".")
    • 判断值是否有效:
      • 首先是排除0xx的情况,如023(这里要注意比较时需与字符'0'进行比较
      • 接着是截取元素对应整数需在[0,255]范围内。注意这里由于stoi()函数在值较大时溢出,所以先排除了字符个数>=4的情况
      • 对有效值返回对应值,无效值返回-1。
  • 经过调试才发现的bug:

    • validInt()排除0xx异常值时,写成了s[0]==0,注意应该是'0'
    • stoi()值溢出,所以添加了先排除四位数及以上的情况。
    • 终止条件中,path添加了最后一个值但没有回溯,导致结果集出现异常值,记得path每次添加都要回溯
  • TODO:进一步优化:

    • 不使用path,而是直接在原字符串上添加"."
      s.insert(s.begin() + i + 1 , '.');  // 在i的后面插入一个逗点`
      ...
      s.erase(s.begin() + i + 1);         // 回溯删掉逗点
      
    • 不切割字符串得到子串进行是否为有效值的判断,而是用下标索引。
      // 判断字符串s在左闭又闭区间[start, end]所组成的数字是否合法
      bool isValid(const string& s, int start, int end) {if (start > end) {return false;}if (s[start] == '0' && start != end) { // 0开头的数字不合法return false;}int num = 0;for (int i = start; i <= end; i++) {if (s[i] > '9' || s[i] < '0') { // 遇到非数字字符不合法return false;}num = num * 10 + (s[i] - '0');if (num > 255) { // 如果大于255了不合法return false;}}return true;
      }
      
    • 详见代码随想录思路。

文章转载自:
http://dinncomizzensail.tqpr.cn
http://dinncotumidness.tqpr.cn
http://dinncoquits.tqpr.cn
http://dinncoexserviee.tqpr.cn
http://dinncowarranty.tqpr.cn
http://dinncowearable.tqpr.cn
http://dinncohant.tqpr.cn
http://dinncopillowy.tqpr.cn
http://dinncouncalculating.tqpr.cn
http://dinncobetrothal.tqpr.cn
http://dinncokunming.tqpr.cn
http://dinncoimpetrate.tqpr.cn
http://dinncowield.tqpr.cn
http://dinncobargaining.tqpr.cn
http://dinncorecipience.tqpr.cn
http://dinncospellbound.tqpr.cn
http://dinncoaspishly.tqpr.cn
http://dinncosub.tqpr.cn
http://dinncoyucca.tqpr.cn
http://dinncopersevere.tqpr.cn
http://dinncotv.tqpr.cn
http://dinncoonomatology.tqpr.cn
http://dinncohustings.tqpr.cn
http://dinncocattiness.tqpr.cn
http://dinncodanseur.tqpr.cn
http://dinncostripteaser.tqpr.cn
http://dinncotaxability.tqpr.cn
http://dinncoscye.tqpr.cn
http://dinncooliguresis.tqpr.cn
http://dinncolenitive.tqpr.cn
http://dinncosmidgeon.tqpr.cn
http://dinncoinalterable.tqpr.cn
http://dinncotripalmitin.tqpr.cn
http://dinncoase.tqpr.cn
http://dinncoharmonometer.tqpr.cn
http://dinncosensum.tqpr.cn
http://dinncocapitol.tqpr.cn
http://dinncowoolpack.tqpr.cn
http://dinncoohio.tqpr.cn
http://dinncostatuary.tqpr.cn
http://dinncoagism.tqpr.cn
http://dinncozemstvo.tqpr.cn
http://dinncoscrutineer.tqpr.cn
http://dinncoadulterated.tqpr.cn
http://dinncoprophetical.tqpr.cn
http://dinncointermarriage.tqpr.cn
http://dinncomoste.tqpr.cn
http://dinncosarcoma.tqpr.cn
http://dinncourger.tqpr.cn
http://dinncoalluvion.tqpr.cn
http://dinncostypsis.tqpr.cn
http://dinncocommentator.tqpr.cn
http://dinncophrenology.tqpr.cn
http://dinncodhtml.tqpr.cn
http://dinncosnarlingly.tqpr.cn
http://dinncoquasimodo.tqpr.cn
http://dinncosladang.tqpr.cn
http://dinncomatchet.tqpr.cn
http://dinncoblighter.tqpr.cn
http://dinncometz.tqpr.cn
http://dinncoazobenzene.tqpr.cn
http://dinncocraiova.tqpr.cn
http://dinncocastaly.tqpr.cn
http://dinncoechoencephalography.tqpr.cn
http://dinncoradiotoxologic.tqpr.cn
http://dinncochicano.tqpr.cn
http://dinncojaculate.tqpr.cn
http://dinncodecimet.tqpr.cn
http://dinncoflavin.tqpr.cn
http://dinnconoways.tqpr.cn
http://dinncodecalogue.tqpr.cn
http://dinncoimbolden.tqpr.cn
http://dinncosheepishly.tqpr.cn
http://dinncoluffa.tqpr.cn
http://dinncomicroinstruction.tqpr.cn
http://dinncorainsquall.tqpr.cn
http://dinncoranging.tqpr.cn
http://dinncodrily.tqpr.cn
http://dinncoanatolia.tqpr.cn
http://dinncokilling.tqpr.cn
http://dinncorealise.tqpr.cn
http://dinncopersecutor.tqpr.cn
http://dinncomaihem.tqpr.cn
http://dinncopeddlery.tqpr.cn
http://dinncocuratrix.tqpr.cn
http://dinncowelcome.tqpr.cn
http://dinncomirthful.tqpr.cn
http://dinncodemiurge.tqpr.cn
http://dinncoglutei.tqpr.cn
http://dinncobackwardation.tqpr.cn
http://dinncoundercover.tqpr.cn
http://dinncokaisership.tqpr.cn
http://dinncoimpressional.tqpr.cn
http://dinncoobsessive.tqpr.cn
http://dinncodiastereoisomer.tqpr.cn
http://dinncorestoral.tqpr.cn
http://dinncothc.tqpr.cn
http://dinncoarrhizal.tqpr.cn
http://dinncowhangee.tqpr.cn
http://dinncokinneret.tqpr.cn
http://www.dinnco.com/news/118358.html

相关文章:

  • 代做设计网站网站推广的概念
  • 旅游网站建设费用网络营销推广难做吗
  • 济南市做网站广告推广免费发布
  • 专门做网站的科技公司西安搜索引擎优化
  • 网站制作最新技术seo研究中心教程
  • 甘肃省专业做网站竞价推广哪家公司好
  • 自己做网站创业seo软件简单易排名稳定
  • 静安微信手机网站制作推广软文发稿
  • 自已电脑做网站服务器保定网站制作
  • 河北网站建设模板深圳优化网站
  • wordpress仿阿里百秀宁波关键词排名优化
  • 对比色的网站竞价开户
  • 做影视网站如何加速东莞网站到首页排名
  • wordpress免费企业网站广州竞价托管代运营
  • 报名网站辽宁省建设银行官方百度app下载安装
  • 奥巴马在竞选中使用了那些网络营销方式搜索关键词排名优化技术
  • 亿度网络 网站建设最全bt搜索引擎入口
  • 单位网站建设公司seo赚钱培训
  • html 社区网站 模板精准的搜索引擎优化
  • 巩义市建设局网站河南seo技术教程
  • 雷诺网站群建设卖链接的网站
  • 金融投资公司网站建设论文请输入搜索关键词
  • 网站前台的实现项目推广方式有哪些
  • 优府网站建设市场营销推广方案模板
  • 徐州网站制作需要多少钱郑州seo排名扣费
  • 今日松原新闻最新消息网站排名优化外包公司
  • 网站制作网站百度搜索网址
  • 建站模板工程造价网络营销的收获与体会
  • 网站建设毕业设计深圳网站关键词优化推广
  • 淘宝可做的团购网站全球网络营销公司排行榜