Leetcode 93. 复原IP地址

java复原IP 地址(力扣Leetcode93) 例如:“0.1.2.201” 和 “192.168.1.1” 是有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “192.168@1.1” 是无效 IP 地址。有效的 IP 地址由四个整数组成,每个整数位于 0 到 255 之间,且不能含有前导 0。有效 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在。 阅读详情

题目

给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。

示例:

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

解答

使用 回溯法 每次都拆分出一个合法的地址段,递归到底 (n == 4) 时判断整个地址是否合法即可。

具体如下:

  1. 每次递归都会截取一段 (1 - 3个字符) 的字符串。
  2. 判断地址段是否合法,若不合法,直接结束深搜,剪掉无用分支。
  3. 否则继续递归下去,直到形成了 4 个地址段。
  4. 若生成的整个地址合法,则加入结果集。
代码
class Solution {

    private List<String> res = new ArrayList<>();
    public List<String> restoreIpAddresses(String s) {
        if(s == null || s.length() < 4) return res;
        dfs(s, "", 0);
        return res;
    }
    
    
    public void dfs(String s, String t, int n) {
        if(n == 4) {
            if(s.length() == 0) res.add(t);
            return;
        }        
        
        for(int i = 1; i < 4; i++) {
            if(s.length() < i) break;
            String str = s.substring(0, i);
            int num = Integer.parseInt(str);
            if(num > 255 || i > 1 && str.charAt(0) == '0') break;
            dfs(s.substring(i), t + str + (n == 3 ? "" : "."), n + 1);
        }
    }
}
结果

在这里插入图片描述

LeetCode 93. 复原IP地址 | Python 使用回溯的思路,解决 LeetCode 《93. 复原 IP 地址》问题 阅读详情

相关推荐

【中等】力扣算法题解析LeetCode93:复原IP地址

题目要求生成所有可能的有效IP地址,需满足:由4个0-255的整数组成,无前导零,用点分隔。采用回溯法(DFS)递归分割字符串,通过剪枝优化(检查剩余长度和段数合法性)减少无效搜索。时间复杂度O(1),空间复杂度O(1)。代码实现中,dfs函数处理分段逻辑,合法时加入结果。

ylumwd的博客 625

【LeetCode 中等题】48-复原IP地址

题目描述:给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。 示例: 输入: "25525511135" 输出: ["255.255.11.135", "255.255.111.35"] 解法1。暴力解法,用4个变量分别从[1,4)遍历,再由此确定4个分段的下标 class Solution(object): def restoreIpAddresse...

weixin_41011942的博客 457

TI AWR2944毫米波雷达开发板开箱:用官方Demo快速上手3D点云与热图生成

本文详细介绍了TI AWR2944毫米波雷达开发板的开箱与实战应用,包括硬件准备、软件开发环境搭建、Demo固件刷写与配置、实时可视化与数据解析等全流程指南。通过官方Demo快速上手3D点云与热图生成,帮助开发者高效掌握毫米波雷达技术在工业检测、智能交通等领域的应用。

weixin_42627853的博客 307

leetcode93. 复原 IP 地址(java)

2] = 255,部分的划分方案,cur 可能是 [2,5,5]、[2,55]、[25,5]、[255] 之一,在 cur 的基础上,我们继续爆搜剩余部分,即递归执行 dfs(idx, n, cur),算法会将剩余部分的划分方案添加到 cur 上,我们只需要确保每次追加到 cur 的数值符合要求即可(没有前导零 且 范围在 [0,255]中.输出:[“1.0.10.23”,“1.0.102.3”,“10.1.0.23”,“10.10.2.3”,“101.0.2.3”]输入:s = “101023”

SP_1024的博客 1107

ESP32-S3双模CMSIS-DAP调试器:USB+WiFi无线调试方案

CMSIS-DAP是ARM生态中标准化的嵌入式调试协议接口,广泛用于Keil、IAR、STM32CubeIDE等开发环境。其核心原理是通过SWD/JTAG物理层实现目标芯片寄存器访问、内存读写与断点控制,依赖确定性时序和低延迟通信。传统DAPLink调试器受限于USB线缆束缚,而WiFi-USB-DAPLink项目将完整CMSIS-DAP v2协议栈移植至ESP32-S3平台,同时支持USB CDC直连与WiFi TCP远程通道,兼顾实时性与网络化部署能力。该方案无需主机驱动、兼容主流IDE,并支持多机并发

weixin_31185473的博客 366

Veristand simulink 集成 simulink 非正版如何处理

1、安装 veristand model Generation Support add-on。matlab 安装veristand model support 记录。下载 以后 如果非正版matlab 直接拖命令行执行。下载后直接命令行执行即可。

flik9527的博客 598

leetcode 93. 复原 IP 地址 java题解

题目 https://leetcode-cn.com/problems/restore-ip-addresses/ 据说建议全文背诵?不至于吧。 分析 有效的ip地址由4段组成,所以递归的终止条件:已分为4段并且遍历完字符串。 从start开始遍历,作为本段的终点。如果此点作为本段终点能使本段满足条件,就继续搜索下一段。如果不能,说明本段数字和超过最大值了,再下去只会更大也不满足条件,失败直接回溯。 因为每段不允许前导0,所以start如果为0且它后面还有数字,start就是前导0,再往后不满足要求。s

乾坤未定,你我皆是黑马 789

SEMI E40标准的加工任务状态模型(Process Job State Model)解析

半导体制造设备的自动化控制离不开对加工任务(Process Job)的精细管理。SEMI E40标准定义了加工任务的全生命周期状态模型。分层建模,支持嵌套与并发子状态,确保复杂流程的灵活控制。SEMI E40通过。

bengg123的博客 1772

Day28--数据结构与算法(Java)回溯算法:复原IP地址 , 子集

力扣题库回溯算法 ● 93.复原IP地址 ● 78.子集 ● 90.子集II

qq_52698263的博客 451

项目管理——14规划绩效域论文套路

规划绩效域论文套路

Flee Elf 1153

Vmware 17保姆级教程:从零部署华为enspPro模拟器(附镜像下载+配置优化)

本文提供了一份详尽的Vmware 17部署华为eNSP Pro模拟器的保姆级教程。内容涵盖从镜像下载、虚拟机导入、网络配置到深度性能调优的全过程,并针对常见启动失败、设备卡顿等故障提供了实用的排查方案,旨在帮助网络工程师和华为认证备考者快速搭建稳定高效的实验环境。

arduino9maker的博客 628

复原IP地址(Java)

根据题目描述,我们可以得到以下几个信息 要把字符串划分为四个段,不能多用不能少用 每个段必须要在0~255这个范围内 每个段都不能包含前导0 要将所有的ip地址都找到 分析: 对于整个字符串,每个段都有三种情况,分别是1位,2位,3位,而如果我们决定了某个段要用几位字符串,又可以从这一情况出发延伸出下一段的三种情况,直到把我们的字符串分成四段并且每一位都用完为止,对此,我们可以采用回溯法得到各种情况,对不满足条件的情况舍弃,满足条件的放到ArrayList中。 图解: 可以看到,对于101023这个字.

ZZYSY的博客 790

用 AI 设计力打造专业 UI_UX:在 Trea、Qoder 等 AI IDE 中集成 ui-ux-pro-max-skill

的核心是知识库Trea 和 Qoder 虽未被--ai all原生支持,但完全可通过@folder手动集成使用后,你的 AI 生成代码将从“功能可用”跃升至“设计专业”这是零成本提升产品质感的最佳实践之一🎨好的 UI 不应是设计师的专利,而是每个开发者的默认能力。然后在 Trea 或 Qoder 中输入—— 让 AI 成为你最懂设计的结对编程伙伴。

lpfasd123的博客 7099

93. 复原 IP 地址(力扣LeetCode)

私有函数cheak用于验证给定字符串的子串是否为有效的IP地址段,而backstracking是一个递归函数,负责穷举并检查所有可能的IP地址组合。给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 ‘.’ 来形成。:这段代码中使用了一个string path来存入当前正在构建的 IP 地址,存的时候是如果符合条件就直接存入了,所以回溯的时候要整段的回溯,即整段的删除。来尝试所有可能的点分隔符插入位置,从而形成有效的IP地址段。

m0_73841621的博客 1679

【CANoe示例分析】0002_SOMEIPDemo

该工程由Vector官方提供,作为仿真SOME/IP节点的示例。Demo中介绍了两种仿真SOME/IP节点的方法,一种是基于arxml数据库的仿真,另一种是没有数据库(arxml、fibex)的仿真。无论是哪种形式的仿真,如果想要通过CAPL程序接收或者发送SOME/IP信息,都需要添加交互层的信息,这些信息可以通过添加DLL文件实现,DLL文件路径在CANoe安装目录下的Exec32文件中。

jasonj333 3514

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

力扣93题:复原 IP 地址

每次递归处理当前字符串片段,尝试将其分割为一个有效的 IP 地址部分。

weixin_48941116的博客 1490

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

力扣:93. 复原 IP 地址

题目: 力扣:93. 复原 IP 地址 写法:暴力求解 代码: public List<String> restoreIpAddresses(String s) { //存放最后的输出结果 List<String> list=new ArrayList<String>(); //长度 int n=s.length(); //存放临时的 String[] strArr =new

Seanliuo 1409

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

LeetCode 力扣 93. 复原IP地址

题目描述(中等难度) 给一个字符串,输出所有的可能的 ip 地址,注意一下,01.1.001.1 类似这种 0 开头的是非法字符串。 解法一 回溯 递归 DFS 很类似于刚做过的 91 题,对字符串进行划分。这个其实也是划分,划分的次数已经确定了,那就是分为 4 部分。那么就直接用回溯的思想,第一部分可能是 1 位数,然后进入递归。第一部分可能是 2 位数,然后进入递归。第一部分可能是 3 位...

wind_liang的博客 1019

LeetCode 力扣 93. 复原IP地址 restoreIpAddresses

大家觉得写还可以,可以点赞、收藏、关注一下吧! 也可以到我的个人博客参观一下,估计近几年都会一直更新!和我做个朋友吧!https://motongxue.cn 文章目录93. 复原IP地址题目描述示例:代码官方题解递归暴力循环三个小数点提交结果 93. 复原IP地址 题目描述 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。 有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 ‘.’ 分隔。 示例: 输入: "25525511135" 输出: ["2

motongxue的博客 368

LeetCode 第 93 题:复原IP地址(C++)

93. 复原IP地址 - 力扣(LeetCode) 最开始的思路是对字符串进行三次切割,每次从左边切一块下来(最多切3位数)。 那么我们现在有三个切割点(下标) i, j, k,它们应该满足: n=s.size()n = s.size()n=s.size() 0=<i<j<k<n−10 =< i < j < k < n-10=<i<j<k<n−1 它们把字符串 s 分为四部分:[0,i],[i+1,j],[j+1,k],[k+1,n−1

zj 728

力扣刷题笔记 93. 复原IP地址 C#

今日签到题,题目如下: 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。 有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 '.' 分隔。 示例: 输入: "25525511135" 输出: ["255.255.11.135", "255.255.111.35"] 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/restore-ip-addresses 著作权归领扣网络所有。商.

cjc52294的博客 342

(回溯) LeetCode 93. 复原IP地址

本题相较于之前的题目会有一些难以理解,但是多思考就能懂了,所以大家一定要坚持,没有什么学不会,只要你肯吃苦,就一定有吃不完的苦!说错了,报意思,一定会成功的!!加油!!时间复杂度:O(N^2);空间复杂度:O(N)。

zth12212003的博客 1001

leetcode题:93. 复原IP地址(中等)

一、题目描述:93. 复原IP地址(中等) 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。 示例: 输入: "25525511135" 输出: ["255.255.11.135", "255.255.111.35"] 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/restore-ip-addresses 著作...

tankpanv的博客 167

leetcode 93 复原ip地址

leetcode 93 复原ip地址 垃圾大爆搜。。。虽然似乎题解思路也差不多。。。但是自己代码就是垃圾。 代码: class Solution { List<String> res = new ArrayList<>(); String ip = ""; int p = 0; void trackBack(int pos, String s){ if(pos == 4 && p == s.length()){

qq_43513855的博客 201

力扣93:复原IP地址

本文介绍了力扣93题"复原IP地址"的解法。题目要求从给定数字字符串中生成所有可能的有效IP地址(由4个0-255整数组成,无前导0)。解题采用回溯算法,通过三个关键步骤:1)结束条件判断是否已生成4个合法数字并遍历完字符串;2)剪枝处理无效情况(如数字未生成完但已到字符串末尾或前导0);3)回溯主体从当前位置开始尝试生成合法数字(0-255)。代码使用深度优先搜索实现,维护一个数组存储当前IP地址段,递归生成所有可能组合后拼接为有效IP地址。

weixin_74285822的博客 445

java实现复原IP地址_LeetCode 力扣 93. 复原IP地址

题目描述(中等难度)给一个字符串,输出所有的可能的 ip 地址,注意一下,01.1.001.1 类似这种 0 开头的是非法字符串。解法一 回溯 递归 DFS很类似于刚做过的 91 题,对字符串进行划分。这个其实也是划分,划分的次数已经确定了,那就是分为 4 部分。那么就直接用回溯的思想,第一部分可能是 1 位数,然后进入递归。第一部分可能是 2 位数,然后进入递归。第一部分可能是 3 位数,然后...

weixin_29435467的博客 440
上一篇: Leetcode 91. 解码方法
下一篇: Leetcode 97. 交错字符串
一纸浮萍
博客等级 码龄9年 11粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值