leetcode:93. 复原 IP 地址

2023-11-14

题目链接:
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 仅由数字组成

解决思路

  • 切割元素,通过回溯方法,添加.符号和删除.符号
  • ip的条件, x.x.x.x,用"."分割都四个部分,每个部分在0到255之间0x,前导零的情况是错误的,用bool函数判断
  • 终止条件,通过.符号的个数,当有三个.符号个数,在判断最后一部分Ip地址是否满足条件,即第四段ip地址是否满足条件

在这里插入图片描述

代码

class Solution {
    vector<string> res;
    //判断[start,end]闭区间的数字是否满足ip地址条件,在0~255之间组成,不含前导0
     bool isStr(string &s, int start, int end)
    {
        if(start > end)  return false;
        if(s[start]=='0' && start != end) //不含前导0,可以单独为0;
            return false;
        int  res = 0;
        //是否在0~255之间
        for(int i=start; i<=end; i++)
        {
            res = res*10 + s[i]-'0';
            if(res>255)
                return false;

        }
        return true;

    }

    void  helper(string &s, int start,int num)
    {
        if(num==3) //终止条件
        {
            if(isStr(s,start, s.size()-1)) 
            //可能出现start > s.size()-1
                res.push_back(s);
            return;
        }
        //[start,i]
        for(int i=start; i<s.size(); i++)
        {
            if(isStr(s,start,i) )
            {
                s.insert(s.begin()+i+1, '.'); //添加.符号
                helper(s,i+2,num+1);
                s.erase(s.begin()+i+1); //删除.符号

            }
            else
                break;

        }

    }

   


public:
    vector<string> restoreIpAddresses(string s) {

        helper(s,0,0);
        return  res;

    }
};

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

leetcode:93. 复原 IP 地址 的相关文章

  • boost::asio + std::future - 关闭套接字后访问冲突

    我正在编写一个简单的 TCP 客户端来发送和接收单行文本 异步操作由 std future 处理 以便于超时阻塞查询 不幸的是 我的测试应用程序在破坏服务器对象时因访问冲突而崩溃 这是我的代码 TCP客户端 hpp ifndef TCPCL
  • std::cout 和 std::wcout 有什么区别?

    在c 中 有什么区别std cout and std wcout 它们都控制流缓冲区的输出或将内容打印到控制台 或者它们只是相似吗 它们作用于不同的字符类型 std cout uses char作为字符类型 std wcout uses w
  • 为 Visual Studio 2013 编译 Tesseract

    我正在尝试使用tesseract在 Visual Studio 2013 中 我在链接器 gt 输入 不是 libtesseract302 static lib 中使用 libtesseract302 lib 一切都正常 并且已编译并运行
  • 启动时出现 OData v4 错误:找不到段“Whatever”的资源

    我正在构建新的 v4 服务 一切进展顺利 直到我为新模型 实体添加了新控制器 并在启动站点进行测试运行时收到此错误 控制器似乎编码正确 就像其他控制器一样 控制器 CustomersOData 中的操作 GetFeed 上的路径模板 Cus
  • 如何在 C# 中从 UNIX 纪元时间转换并考虑夏令时?

    我有一个从 unix 纪元时间转换为 NET DateTime 值的函数 public static DateTime FromUnixEpochTime double unixTime DateTime d new DateTime 19
  • 如何从 .resx 文件条目获取注释

    资源文件中的字符串有名称 值和注释 The ResXResourceReader类让我可以访问名称和值 有办法看评论吗 你应该能够得到Comment via ResXDataNode class http msdn microsoft co
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上
  • 用于检查项目文件中的项目变量和引用路径的 api

    我正在研究一个 net application VS2010 与 x 没有 解和变量号这些解决方案中的项目数量 我需要检查项目属性 特定于一定数量的项目 是否同质 并且检查 验证构建期间的参考路径 有没有一个API是这样的吗 如果没有 我该
  • 上下文敏感与歧义

    我对上下文敏感性和歧义如何相互影响感到困惑 我认为正确的是 歧义 歧义语法会导致使用左推导或右推导构建多个解析树 所有可能的语法都是二义性的语言是二义性语言 例如 C 是一种不明确的语言 因为 x y 总是可以表示两个不同的事物 如下所述
  • std::async 与重载函数

    可能的重复 std bind 重载解析 https stackoverflow com questions 4159487 stdbind overload resolution 考虑以下 C 示例 class A public int f
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • 有人可以提供一个使用 Amazon Web Services 的 itemsearch 的 C# 示例吗

    我正在尝试使用 Amazon Web Services 查询艺术家和标题信息并接收回专辑封面 使用 C 我找不到任何与此接近的示例 所有在线示例都已过时 并且不适用于 AWS 的较新版本 有一个开源项目CodePlex http www c
  • (de)从 CSV 序列化为对象(或者最好是类型对象的列表)

    我是一名 C 程序员 试图学习 C 似乎有一些内置的对象序列化 但我在这里有点不知所措 我被要求将测试数据从 CSV 文件加载到对象集合中 CSV 比 xml 更受青睐 因为它更简单且更易于人类阅读 我们正在创建测试数据来运行单元测试 该集
  • C++ 密码屏蔽

    我正在编写一个代码来接收密码输入 下面是我的代码 程序运行良好 但问题是除了数字和字母字符之外的其他键也被读取 例如删除 插入等 我知道如何避免它吗 特q string pw char c while c 13 Loop until Ent
  • 为什么在setsid()之前fork()

    Why fork before setsid 守护进程 基本上 如果我想将一个进程与其控制终端分离并使其成为进程组领导者 我使用setsid 之前没有分叉就这样做是行不通的 Why 首先 setsid 将使您的进程成为进程组的领导者 但它也
  • 英特尔 Pin 与 C++14

    问题 我有一些关于在 C 14 或其他 C 版本中使用英特尔 Pin 的问题 使用较新版本从较旧的 C 编译代码很少会出现任何问题 但由于 Intel Pin 是操作指令级别的 如果我使用 C 11 或 C 14 编译它 是否会出现任何不良
  • memset 未填充数组

    u32 iterations 5 u32 ecx u32 malloc sizeof u32 iterations memset ecx 0xBAADF00D sizeof u32 iterations printf 8X n ecx 0
  • 防止在工厂方法之外实例化对象

    假设我有一个带有工厂方法的类 class A public static A newA Some code logging return new A 是否可以使用 a 来阻止此类对象的实例化new 那么工厂方法是创建对象实例的唯一方法吗 当
  • 在客户端系统中安装后桌面应用程序无法打开

    我目前正在使用 Visual Studio 2017 和 4 6 1 net 框架 我为桌面应用程序创建了安装文件 安装程序在我的系统中完美安装并运行 问题是安装程序在其他计算机上成功安装 但应用程序无法打开 edit 在客户端系统中下载了
  • 如何正确使用 std::condition_variable?

    我很困惑conditions variables以及如何 安全 使用它们 在我的应用程序中 我有一个创建 gui 线程的类 但是当 gui 是由 gui 线程构造时 主线程需要等待 情况与下面的函数相同 主线程创建互斥体 锁和conditi

随机推荐

  • 文件上传漏洞靶场upload-labs学习(pass11-pass15)

    Upload Labs关卡 0x00 Pass11 str ireplace复写绕过 0x01 Pass12 GET方式 00截断 0x02 Pass13 POST方式 00截断 0x03 Pass14 文件头截取判断 0x04 Pass1
  • 游戏测试和软件测试有什么区别?

    针对手游而言 游戏测试的本质是APP 所以不少手游的测试方式与APP测试异曲同工 然而也有所不同 APP更多的是具有一种工具 一款APP好不好用不重要 关键点在于实用 而游戏则具有一种玩具属性 它并不见得实用 但他要符合玩家的好恶 要能让玩
  • 华为OD机试 - 寻找相似单词(Java)

    题目描述 给定一个可存储若干单词的字典 找出指定单词的所有相似单词 并且按照单词名称从小到大排序输出 单词仅包括字母 但可能大小写并存 大写不一定只出现在首字母 相似单词说明 给定一个单词X 如果通过任意交换单词中字母的位置得到不同的单词Y
  • python3 pickle.load 读python2 文件报错, UnicodeDecodeError 和 TypeError

    pickle持久化文件用 python2 7 pickle dump产生 程序升级后用python3 6 读文件报错 UnicodeDecodeError ascii codec can t decode byte 0xc3 in posi
  • 【SVN】svn服务器访问失败【由于连接方在一段时间后没有反应】

    可以很清楚的告诉你 是由于服务器的端口未打开或者你的服务根本没有运行 环境 1 服务器windows2012 2 本机电脑win7 3 svn本地的版本和服务器的版本一致 分为以下两种情况 1 在服务器上可以进行svn的操作 2 在服务器上
  • HTTP Status 500 - Request processing failed; nested exception is java.lang.NullPointerException

    做青橙电商项目的时候 发布项目后登录发现直接报空指针异常 仔细检查代码后发现是dubbo远程框架中service远程调用失败 问题是导包倒错了 报错如下 HTTP Status 500 Request processing failed n
  • 博客第一天>>>>梦开始了

    简单的自我介绍一下哈 新码农上任三把活 gt 自我介绍 大哥大佬牛逼的人们好 我来自广西一所三本大学 当一个想要月入过万的小小码农 梦先慢慢积累 语言目标 从c开始学起 第一个月要把c语言的大概 流程做一遍 先学到会看懂一些C语言代码 其间
  • 串联型PI和并联型PI调节器的比较

    一 PI调节器的种类 图3 4 仿真波形变化情况 串联型PI调节器 1500r min 从图3 1到3 4比较可知 与并联型PI调节器相比 串联型PI调节器的超调量很小 速度环 且动态过程时间短 稳态过程的纹波也相对较小 综合可知 代入串联
  • 【运维笔记】kafka跨域通信代理

    kafka跨域通信代理 场景描述 模拟思路 模拟环境说明 基础环境 kafka版本 环境部署 基础软件安装 编写kafka的docker compose yml文件 环境验证 解决方案 Kafka通信机制 解决思路 代理配置 验证是否满足要
  • 解决python中文乱码问题

    python输出中文乱码的问题相信大家都遇到过 那么应该如何解决呢 一 修改系统变量 依次打开 设置 gt 系统 gt 关于 gt 高级系统设置 gt 环境变量 gt 新建系统变量 新变量的变量名是 PYTHONIOENCODING 变量值
  • 《Win10——如何设置开机自启动项》

    Win10 如何设置开机自启动项 1 为需要自启动的程序创建快捷方式 2 Win R输入 shell startup 按下回车键出现一个文件夹 3 将快捷方式拖入文件夹中
  • Unity Mathf的一些函数

    1 Mathf Lerp float a float b float t 1 1 官方给出的解释为 用t在a和b之间做线性差值 参数t限制在0到1之间 当t 0时返回值为a 当t 1时返回值为b 当t为0 5时返回值为a到b的中间点 1 2
  • Computed 和 Watch 的区别

    1 computed计算属性 作用 1 解决模板中放入过多的逻辑会让模板过重且难以维护的问题 例如两个数据的拼接或字体颜色的判断 2 它支持缓存 只有依赖的数据发生了变化 才会重新计算 例如模板中多次用到数据拼接可以用计算属性 只执行一次计
  • 微信小程序播放音乐并同步一次显示一行歌词

    主要是对于歌词部分的描述 gitee项目仓库地址 https gitee com manster1231 master cloud music 点个star哦 1 总体思路 先在加载页面时异步获取歌词 根据 musicId 我们可以获取到该
  • Nginx proxy_pass反向代理动态端口

    背景 某项目需要播放第三方监控视频 我方访问域名假定为 my area com 第三方的域名假定为 video other com 域名不一致就导致浏览器跨域问题无法播放 且第三方拖拖拉拉不想解决 于是只有我方使用 nginx 做反向代理来
  • [CVPR-23-Highlight] Magic3D: High-Resolution Text-to-3D Content Creation

    目录 Abstract Background DreamFusion High Resolution 3D Generation Coarse to fine Diffusion Priors Scene Models Coarse to
  • jdk1.8 -- Collectors 的使用

    package com collector import java util ArrayList import java util Arrays import java util Collections import java util I
  • CNN核心概念理解

    卷积神经网络 Convolutional Neural Networks 简称CNN 是一种经典的神经网络算法 由于在图像识别领域取得的良好效果 随着人工智能的火热 它也受到越来越多的关注 CNN的核心概念卷积 池化听起来好像很神秘 了解之
  • stm32中断

    stm32中断 一 中断原理 二 CubeMX中断控制LED灯 一 项目生成 二 代码修改 三 编译运行 三 HAL库中断串口通信 一 新建项目 二 代码 三 烧录运行结果 四 总结 五 参考资料 一 中断原理 1 数据传输方式 2 全过程
  • leetcode:93. 复原 IP 地址

    题目链接 93 复原 IP 地址 题目描述 有效 IP 地址 正好由四个整数 每个整数位于 0 到 255 之间组成 且不能含有前导 0 整数之间用 分隔 例如 0 1 2 201 和 192 168 1 1 是 有效 IP 地址 但是 0