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

【力扣刷题练习】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 中的任何数字。你可以按 任何 顺序返回答案。

题目解答:

class Solution {
private:vector<string> res; // 创建容器储存结果// 回溯的主体void backtrack(string& s, int startIndex, int pointNum) {if (pointNum == 3) {if (isLegal(s, startIndex, s.size() - 1))res.push_back(s);return;}for (int i = startIndex; i < s.size(); i++) {if (isLegal(s, startIndex, i)) {s.insert(s.begin() + i + 1, '.');pointNum++;backtrack(s, i + 2, pointNum);pointNum--;s.erase(s.begin() + i + 1);} else {break;}}}// 判断该串在给定区间内组成数字是否合法bool isLegal(string s, int start, int end) {if (start > end || (s[start] == '0' && start != end))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;}public:vector<string> restoreIpAddresses(string s) {res.clear();if (s.size() >= 4 && s.size() <= 12) // 长度符合ip地址规则backtrack(s, 0, 0);return res;}
};

题目思路:

  1. 私有成员变量

    • vector<string> res;:用于存储所有可能的合法 IP 地址。
  2. 回溯函数 backtrack

    • 参数:
      • string& s:输入的字符串。
      • int startIndex:当前处理位置的起始索引。
      • int pointNum:当前已经插入的点号数量。
    • 功能:递归地尝试在字符串 s 的不同位置插入点号,以生成可能的 IP 地址。
    • 终止条件:当已经插入了 3 个点号(即 IP 地址的 4 部分都已经形成),并且当前的字符串 sstartIndex 到末尾的部分是一个合法的数字时,将 s 添加到结果集 res 中。
    • 递归过程:从 startIndex 开始遍历字符串 s,尝试在每个位置插入点号。如果插入点号后的子串是合法的数字,则递归调用 backtrack 函数继续处理剩余部分。
  3. 辅助函数 isLegal

    • 参数:
      • string s:输入的字符串。
      • int start:检查的起始索引。
      • int end:检查的结束索引。
    • 功能:判断字符串 sstartend 的子串是否表示一个合法的数字(在 IP 地址的上下文中)。
    • 判断逻辑:
      • 如果子串的长度超过 3 或以 ‘0’ 开头但不是单个 ‘0’,则不合法。
      • 遍历子串的每个字符,如果字符不是数字,则不合法。
      • 计算子串表示的数字,如果数字大于 255,则不合法。
  4. 公有函数 restoreIpAddresses

    • 参数:
      • string s:输入的字符串。
    • 功能:主函数,用于启动整个恢复 IP 地址的过程。
    • 首先,清空结果集 res
    • 检查输入字符串 s 的长度,确保它符合 IP 地址的长度规则(4 到 12 个字符)。
    • 调用 backtrack 函数开始回溯过程。
    • 返回结果集 res

通过回溯算法,尝试在输入字符串的不同位置插入点号,以生成所有可能的合法 IP 地址组合。在每次尝试插入点号时,都通过 isLegal 函数来检查当前部分是否是一个合法的数字。

相关文章:

【力扣刷题练习】93. 复原 IP 地址

题目描述&#xff1a; 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 ‘.’ 分隔。 例如&#xff1a;“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址&#xff0c;但是 “0.011…...

linux查看文件内容cat,less,vi,vim

学习记录 目录 catlessvi vim cat 输出 FILE 文件的全部内容 $ cat [OPTION] FILE示例 输出 file.txt 的全部内容 $ cat file.txt查看 file1.txt 与 file2.txt 连接后的内容 $ cat file1.txt file2.txt为什么名字叫 cat&#xff1f; 当然和猫咪没有关系。 cat 这里是 co…...

【恒源智享云】conda虚拟环境的操作指令

conda虚拟环境的操作指令 由于虚拟环境经常会用到&#xff0c;但是我总忘记&#xff0c;所以写个博客&#xff0c;留作自用。 在恒源智享云上&#xff0c;可以直接在终端界面输入指令&#xff0c;例如&#xff1a; 查看已经存在的虚拟环境列表 conda env list查看当前虚拟…...

Flask python 开发篇:项目布局

一、背景简介 Flask应用程序可以像单个文件一样简单。就像上一篇简单实现一个接口一样&#xff0c;所有的东西都在一个python文件内&#xff1b; 然而&#xff0c;当项目越来越大的时候&#xff0c;把所有代码放在单个文件中就有点不堪重负了。 Python 项目使用 包 来管理代码…...

docker 部署prometheus+grafana

首先进行部署docker 配置阿里云依赖&#xff1a; curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo # 配置centos 7的镜像源 yum install -y yum-utils device-mapper-persistent-data lvm2 # 安装一些后期或需要的的一下依…...

RNN实战

本主要是利用RNN做多分类任务&#xff0c;在熟悉RNN训练的过程中&#xff0c;我们可以理解 1&#xff09;超参数 batch_size和pad_size对训练过程的影响。 2&#xff09;文本处理过程中是如何将文本的文字表示转化为向量表示 3&#xff09;RNN梯度消失和序列长度的关系 4&#…...

从GPT入门,到R语言基础与作图、回归模型分析、混合效应模型、多元统计分析及结构方程模型、Meta分析、随机森林模型及贝叶斯回归分析综合应用等专题及实战案例

目录 专题一 GPT及大语言模型简介及使用入门 专题二 GPT与R语言基础与作图&#xff08;ggplot2&#xff09; 专题三 GPT与R语言回归模型&#xff08;lm&glm&#xff09; 专题四 GPT与混合效应模型&#xff08;lmm&glmm&#xff09; 专题五 GPT与多元统计分析&…...

【Android】数据安全(一) —— Sqlite加密

目录 SQLCipherSQLiteCrypt其它 SQLCipher SQLCipher 是 SQLite 数据库的的开源扩展&#xff0c;使用了 256 位 AES 加密&#xff0c;支持跨平台、零配置、数据100%加密、加密开销低至 5 -15%、占用空间小、性能出色等优点&#xff0c;因此非常适合保护嵌入式应用程序数据库&a…...

云原生周刊:Helm Charts 深入探究 | 2024.3.11

开源项目推荐 Glasskube Glasskube 提供了一个用于 Kubernetes 的缺失的包管理器。它具有图形用户界面(GUI)和命令行界面(CLI)。Glasskube 包是具备依赖感知、GitOps 准备和可以通过中央公共包仓库自动更新的特性。 imgpkg imgpkg&#xff08;发音为&#xff1a;"imag…...

【C++初阶】第六站 : 模板初阶

前言&#xff1a; 本章知识点&#xff1a;泛型编程、函数模板、类模板 专栏&#xff1a; C初阶 目录 泛型编程 函数模板 1.函数模板概念 2.函数模板格式 3.函数模板的原理 4.函数模板的实例化 5.模板参数的匹配原则 类模板 类模板的定义格式 类模板的实例化 泛型编程 如何实现一…...

训练保存模型checkpoint时报错SyntaxError: invalid syntax

在使用pytorch训练保存checkpoint时&#xff0c;出现如下报错&#xff1a; rootautodl-container-745411b452-c5cebfed:~/kvasir-seg-main# python train_transunet.py --loss_function"IoULoss" --training_augmentation0File "train_transunet.py", lin…...

虚拟机中安装Win98

文章目录 一、下载Win98二、制作可启动光盘三、VMware中安装Win98四、Qemu中安装Win981. Qemu的安装2. 安装Win98 Win98是微软于1998年发布的16位与32位混合的操作系统&#xff0c;也是一代经典的操作系统&#xff0c;期间出现了不少经典的软件与游戏&#xff0c;还是值得怀念的…...

《C++游戏编程入门》第4章 标准模板库: Hangman

《C游戏编程入门》第4章 标准模板库: Hangman 4.1 标准模板库4.2 vector04.heros_inventory2.cpp 4.3 使用迭代器04.heros_inventory3.cpp 4.4 使用算法04.high_scores.cpp 4.5 理解向量性能4.6 其他STL容器4.7 Hangman简介04.hangman.cpp 4.1 标准模板库 Standard Template L…...

Linux最小系统安装无法查看IP地址

1&#xff0c;出现原因 服务器重启完成之后&#xff0c;我们可以通过linux的指令 ip addr 来查询Linux系统的IP地址&#xff0c;具体信息如下: 从图中我们可以看到&#xff0c;并没有获取到linux系统的IP地址&#xff0c;这是为什么呢&#xff1f;这是由于启动服务器时未加载网…...

分享个好用的GPT网站

目录 一、背景 二、功能描述 1、写代码 2、联网查询 3、AI绘图 一、背景 我现在的开发工作都依靠ChatGPT&#xff0c;效率提升了好几倍。这样一来&#xff0c;我有更多时间来摸鱼&#xff0c;真是嘎嘎香~ ⭐⭐⭐点击直达 ⭐⭐⭐ 二、功能描述 1、写代码 import java.ut…...

hyperf 二十六 数据迁移 二

教程&#xff1a;Hyperf 参考文章hyperf 二十五 数据迁移 一-CSDN博客 根据之前写的数据迁移的文章&#xff0c;已经说明Hyperf\Database\Schema\Schema::create()实际运行Hyperf\Database\Schema\Grammars\MySqlGrammar::compileCreate()生成的sql字符串。 文档所谓"在…...

linux下如何hook第三方播放器的视频数据?

背景 作为显卡生产商,当用户使用我们的显卡硬解码播放视频时,如果出现比如花屏等问题,为了快速确定问题原因,我们需要一个工具来帮助判断出问题是出在原始视频端,亦或者是应用程序端,亦或者是显卡端。因此我们需要一种方法,来对目标播放器程序进行监控,并捕获到视频源的…...

如何通过Python代码连接OceanBase Oracle租户

背景 目前&#xff0c;连接数据库的Oracle租户&#xff0c;只能通过Java和C的驱动程序&#xff0c;无法通过其他语言的驱动程序。为了满足社区中用户希望在Python代码中连接Oracle租户的需求&#xff0c;这里提供一种替代方案。通过结合使用JayDeBeApi和JDBC&#xff0c;我们可…...

2 月 Web3 游戏行业动态

作者&#xff1a;stellafootprint.network 数据来源&#xff1a;区块链游戏研究页面 - Footprint Analytics 2024 年 2 月&#xff0c;区块链游戏领域在加密货币价格上涨和活跃用户激增的推动下&#xff0c;实现了显著增长。然而&#xff0c;行业在维持用户参与度和留存率方面…...

普发Pfeiffer Prisma QMS200四极质谱计内部电路图装配3D图电路板接口详细注解

普发Pfeiffer Prisma QMS200四极质谱计内部电路图装配3D图电路板接口详细注解...

【2026年最新600套毕设项目分享】基于微信小程序的童装商城(30023)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...

AUTOSAR人才稀缺,为何能撬动百万年薪?

1. AUTOSAR工程师为何成为"抢手货"&#xff1f; 最近两年&#xff0c;智能汽车行业就像一列高速行驶的列车&#xff0c;而AUTOSAR工程师就是这列车上最抢手的"车票"。我身边有个真实案例&#xff1a;一位有7年AUTOSAR开发经验的朋友&#xff0c;去年跳槽时…...

告别Camera2 API的折腾:用UVCAndroid库5分钟搞定安卓外接USB摄像头开发

安卓USB摄像头开发革命&#xff1a;UVCAndroid库极简集成指南 在安卓生态中&#xff0c;外接摄像头的开发一直是个令人头疼的问题。传统Camera2 API的复杂性让不少开发者望而却步——从设备枚举到权限处理&#xff0c;从格式转换到预览控制&#xff0c;每个环节都可能成为项目延…...

告别手动点击!Python脚本批量下载InterPro蛋白质结构域数据(附完整代码)

Python自动化实战&#xff1a;高效批量获取InterPro蛋白质结构域数据 在生物信息学研究中&#xff0c;处理蛋白质结构域数据是许多分析流程的关键起点。手动从InterPro数据库逐个下载数百甚至数千个蛋白质的结构域信息&#xff0c;不仅耗时费力&#xff0c;还容易出错。本文将带…...

如何快速恢复PL2303老芯片兼容性:Windows 10/11终极驱动解决方案

如何快速恢复PL2303老芯片兼容性&#xff1a;Windows 10/11终极驱动解决方案 【免费下载链接】pl2303-win10 Windows 10 driver for end-of-life PL-2303 chipsets. 项目地址: https://gitcode.com/gh_mirrors/pl/pl2303-win10 还在为那些老式PL2303串口设备在Windows 1…...

3步掌握ModTheSpire:Slay the Spire模组加载终极指南

3步掌握ModTheSpire&#xff1a;Slay the Spire模组加载终极指南 【免费下载链接】ModTheSpire External mod loader for Slay The Spire 项目地址: https://gitcode.com/gh_mirrors/mo/ModTheSpire ModTheSpire是《Slay the Spire》最强大的外部模组加载器&#xff0c;…...

CSL编辑器:重新定义学术文献样式编辑的智能方案

CSL编辑器&#xff1a;重新定义学术文献样式编辑的智能方案 【免费下载链接】csl-editor cslEditorLib - A HTML 5 library for searching and editing CSL styles 项目地址: https://gitcode.com/gh_mirrors/csl/csl-editor 你是否曾为学术论文的引用格式而烦恼&#x…...

银河麒麟系统(arm64)下基于CMake的GEOS3.8.2编译实战指南

1. 银河麒麟系统与GEOS编译背景 最近在国产化替代的大背景下&#xff0c;越来越多的开发者开始接触银河麒麟操作系统。作为一款基于Linux的国产系统&#xff0c;银河麒麟在arm64架构上的表现相当出色&#xff0c;但同时也带来了新的挑战——很多常用的开源库并没有现成的arm64…...

如何快速解密网易云音乐NCM文件:终极免费转换工具完全指南

如何快速解密网易云音乐NCM文件&#xff1a;终极免费转换工具完全指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM加密文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump是一款专业的NCM解密工具&…...

生物信息学必备:Aspera 3.X.X与Aspera_cli高速下载NCBI/EBI数据实战指南

生物信息学必备&#xff1a;Aspera 3.X.X与Aspera_cli高速下载NCBI/EBI数据实战指南 在基因组学、转录组学等生物信息学研究中&#xff0c;高效获取公共数据库中的海量数据是每个研究者必须面对的挑战。传统FTP下载方式在面对数百GB的测序数据时往往力不从心&#xff0c;而Aspe…...