复原IP地址 (leetcode 93

server/2025/3/15 23:59:05/

leetcode系列

文章目录

  • 一、核心操作
  • 二、外层配合操作
  • 三、核心模式代码
  • 总结


一、核心操作

  1. 判断字段是否有效函数:首先start不能大于end当到最后一个收获层的时候,start已经是s.size了,但是end还是只能是s.size-1其次当字段不止一位时,start不能是0,然后再循环判断每一位是不是处于字符‘0’和‘9’之间,以及通过num*10+当前数字的操作求出值,判断是不是大于255
  2. 回溯函数:传参中多了一个pointNum,用于判断有几个点,如果到了3个点,就把剩下的字段传入 是否有效函数 如果有效就可以收获结果了,并且不管有没有收获,到了3个点就要返回。在每一层的循环中,对于字段的有效性做出判断,如果有效则在i的后面位置加点,并将pointNum++,注意由于加了点,输入下一层的startIndex是i+2,并进行回溯;如果无效的话直接break

提示:小白个人理解,如有错误敬请谅解!

二、外层配合操作

  1. 调用回溯函数

三、核心模式代码

代码如下:

class Solution {
public:vector<string> res;bool isValid(string s, int start, int end){if(start>end)return false;if(s[start]=='0' && start!=end)return false;if((end-start+1)>3)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)return false;}return true;}void backtracking(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++;backtracking(s,i+2,pointNum);s.erase(s.begin()+i+1);pointNum--;}else break;}}vector<string> restoreIpAddresses(string s) {if(!s.size())return res;backtracking(s,0,0);return res;}
};

总结

  1. 需要多注意字段有效性的判断

http://www.ppmy.cn/server/175287.html

相关文章

VSCode C/C++环境搭建指南

VSCode C/C环境搭建指南 一、环境搭建全流程&#xff08;Windows/Linux/macOS&#xff09; 1. 编译器安装与配置&#xff08;以Windows为例&#xff09; • MinGW-w64详细安装 • 访问 MinGW-w64官网&#xff0c;选择 x86_64-posix-seh 分支&#xff08;支持C23和多线程开发…

Driver Development Kit(驱动开发服务)

文章目录 一、Driver Development Kit 简介二、外设扩展驱动客户端开发指导一、Driver Development Kit 简介 Driver Development Kit(驱动开发套件)为外设驱动开发者提供高效、安全、丰富的外设扩展驱动开发解决方案C-API,支持外设驱动开发者为消费者带来外设即插即用的极…

JavaScript 性能优化实战指南

涵盖代码优化、内存管理、运行时效率提升等核心方向&#xff0c;通过实战代码示例分析常见性能陷阱及优化方案&#xff1a; 一、代码执行效率优化 1. 避免全局变量污染 <JAVASCRIPT> // ❌ 低效&#xff1a;全局查找耗时长 function sum(a, b) {return a b window.ta…

‌Visual Studio Code(VS Code)支持的编程语言

‌JavaScript‌&#xff1a;VS Code 原生支持 JavaScript&#xff0c;提供语法高亮、代码折叠、自动补全等功能。推荐使用ESLint和Prettier进行代码格式化和错误检查‌。 ‌TypeScript‌&#xff1a;作为 JavaScript 的超集&#xff0c;TypeScript 在 VS Code 中也得到原生支持…

功能仿真

1、仿真原理 1.1、 串行模拟并行思路分析 串行模拟并行仿真主要分为两种情况&#xff1a;独立的并行电路 有关联的并行电路。 独立的并行电路&#xff1a;若并行的电路之间是相互独立的&#xff0c;同时开始多件事情和逐个执行是完全一样的。 有关联的并行电路运行&am…

Tomcat+Servlet运行后出现404错误解决方案

TomcatServlet运行后出现404错误解决方案 一、错误效果复现 后续的解决方案&#xff0c;仅仅针对我遇到的情况。对不能涵盖大部分情况感到抱歉。 二、错误分析 先看看源代码&#xff1f; package com.example.secondclass.Servlet; import java.io.*; import jakarta.servl…

Pycharm实用技巧

一、Pycharm 参数注释 在 PyCharm 中&#xff0c;在方法下输入三引号&#xff08;"""&#xff09;就能自动生成参数注释&#xff1a;def input_combo_detail(self, scale, ptype_data, ptype_info, sku_info, unit_info, price, qty):""":param…

Kaiming Uniform 初始化:神经网络权重初始化的优雅解决方案

Kaiming Uniform 初始化&#xff1a;神经网络权重初始化的优雅解决方案 在深度学习的模型训练中&#xff0c;权重初始化的选择对网络的收敛速度和性能有着深远影响。传统的随机初始化&#xff08;如高斯分布&#xff09;在浅层网络中尚可接受&#xff0c;但随着网络深度增加&a…