力扣93-复原IP地址

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

力扣93 复原IP地址

力扣题目链接:https://leetcode-cn.com/problems/restore-ip-addresses/
面试遇到3次+~

参考

回溯实现:https://mp.weixin.qq.com/s/xlJlk6VHlFL5Vvt1aZ9AbA

class Solution {
    List<String> result = new ArrayList<>();

    public List<String> restoreIpAddresses(String s) {
        if (s.length() > 12) return result; // 算是剪枝了
        backTrack(s, 0, 0);
        return result;
    }

    // startIndex: 搜索的起始位置, pointNum:添加逗点的数量
    private void backTrack(String s, int startIndex, int pointNum) {
        if (pointNum == 3) {// 逗点数量为3时,分隔结束
            // 判断第四段⼦字符串是否合法,如果合法就放进result中
            if (isValid(s,startIndex,s.length()-1)) {
                result.add(s);
            }
            return;
        }
        for (int i = startIndex; i < s.length(); i++) {
            if (isValid(s, startIndex, i)) {
                s = s.substring(0, i + 1) + "." + s.substring(i + 1);    //在str的后⾯插⼊⼀个逗点
                pointNum++;
                backTrack(s, i + 2, pointNum);// 插⼊逗点之后下⼀个⼦串的起始位置为i+2
                pointNum--;// 回溯
                s = s.substring(0, i + 1) + s.substring(i + 2);// 回溯删掉逗点
            } else {
                break;
            }
        }
    }

    // 判断字符串s在左闭⼜闭区间[start, end]所组成的数字是否合法
    private Boolean isValid(String s, int start, int end) {
        if (start > end) {
            return false;
        }
        if (s.charAt(start) == '0' && start != end) { // 0开头的数字不合法
            return false;
        }
        int num = 0;
        for (int i = start; i <= end; i++) {
            if (s.charAt(i) > '9' || s.charAt(i) < '0') { // 遇到⾮数字字符不合法
                return false;
            }
            num = num * 10 + (s.charAt(i) - '0');
            if (num > 255) { // 如果⼤于255了不合法
                return false;
            }
        }
        return true;
    }
}
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 地址,这些地址可以通过在。 阅读详情

相关推荐

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

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

ylumwd的博客 625

力扣93题:复原 IP 地址

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

weixin_48941116的博客 1490

CESM笔记——CESM1.0-CESM1.2.2-CESM2.1.3三个版本模式工作流对比

最近测试了CESM1.0,CESM1.2.2和CESM2.1.3三个版本,不同版本在workflow上有一些区别,来做点笔记。 CESM1.0 测试compset:B_2000,F_2000 workflow: 1. create_newcase -case ~/CESM/cesm1_0/script/B_2000 -compset B_2000 -res f19_g16 -mach tianhe 2. cd B_2000 (optional) env_mach_pes.xml ##修改核数,

砍柴姑娘Jourosy的博客 4942

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

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

m0_73841621的博客 1679

基于PlatformIO与CMSIS的STM32库函数开发实战:从环境搭建到外设驱动

本文详细介绍了基于PlatformIO与CMSIS的STM32库函数开发实战,从环境搭建到外设驱动实现。通过对比传统IDE,PlatformIO结合CMSIS框架在跨平台开发、代码可移植性和调试体验上更具优势。文章包含PlatformIO.ini配置详解、GPIO/USART驱动开发实例及常见问题解决方案,帮助开发者高效完成STM32项目开发。

weixin_29190169的博客 421

ECU-TEST笔记&使用技巧01

说明 1)所述均基于如下环境:ECU-TEST 8.0、Win10系统、NI Veristand 2018(HIL测试)。不排除因为版本及软件环境问题,所述方法不奏效或有更好的方法,欢迎交流,一起提高。 2)本博客以问答形式进行,所述问题均来自于实际测试(包括MIL、HIL测试)遇到的问题及需求,目的是提高测试效率和自动化测试序列的可维护性。 3)本博客尽量从测试方法及ECU-TEST原...

Eigrl的博客 1万+

力扣93题(找IP地址、分割问题、递归、回溯)

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/restore-ip-addresses 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 93.给定一个只包含数字的字符串,用以表示一个 IP 地址,返回所有可能从 s 获得的 有效 IP 地址 。你可以按任何顺序返回答案。 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。 例如:“0.1.2.201” 和 “

weixin_44247784的博客 714

Jupyter Notebook 命名出现“error”且运行后没反应

Jupyter Notebook 命名出现“error”且运行后没反应提前声明错误截图(方便大家看看是不是自己的错误)解决方法 提前声明 我的问题是在看到答主 @开始King的回答后才解决的,因为答主大大的文章后面有些地方不是很详细,我在这里再在King大大的基础上完善一下子 错误截图(方便大家看看是不是自己的错误) 1.命名失败,上面出现一个“error”字样 2.运行失败,无论是点击上方的运行按钮还是按快捷键shift+enter 都只会向下再增加一个代码块,而不会运行程序。 (也不是很多人出现的[*

qq_52770743的博客 1万+

[力扣每日一鸡]——93.复原IP地址(详解)

算法思想转自https://leetcode-cn.com/problems/restore-ip-addresses/solution/hui-su-fa-xiang-xi-zhu-shi-luo-ji-qing-xi-by-ydong/ 仅用于个人学习 复原IP地址 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。 有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 ‘.’ 分隔。 示例: 输入: "25525511135" 输出: ["255.2

青布衫白少年的博客 486

LS-Dyna模态分析实战:从模型构建到结果解读的全流程指南

本文提供了一份详尽的LS-Dyna模态分析实战指南。文章系统讲解了如何利用LS-Dyna内置的隐式求解器进行特征值求解,从模型构建、几何清理、材料与连接设置,到核心的边界条件与隐式求解控制(如*CONTROL_IMPLICIT_EIGENVALUE),最后完成计算并解读频率与振型结果。旨在帮助工程师在熟悉的环境中高效完成结构振动特性分析,为后续动态响应分析奠定基础。

info6的博客 262

工业模型导入Unity实战:从ProE/SolidWorks到实时渲染的完整流程

在工业仿真、数字孪生和VR/AR应用开发中,将高精度工程模型导入实时渲染引擎是一个常见的技术挑战。其核心原理在于参数化工程软件与实时渲染引擎的数据结构差异:前者基于精确的B-rep边界表示和特征树,后者依赖轻量化的三角网格与材质贴图。这一转换的技术价值在于实现工程数据的可视化与交互化,为产品展示、虚拟培训和工厂仿真等应用场景提供基础。通过数据翻译与优化流程,特别是利用3ds Max或Blender作为中转站进行网格优化与UV展开,能够有效解决模型破面、材质丢失和性能问题。本文聚焦于ProE(Creo)和So

weixin_33050117的博客 344

【攻克力扣200题--40】93. 复原IP地址

细节超级多,多多注意。 可以是0.0.4.6;但不可以是01.01.03.09.。。 var restoreIpAddresses = function(s) { var res=[]; helper("",s,res,0); return res; }; function helper(temp,s,res,k){ if(k==4||s.length==0)...

m0_37976836的博客 497

15、电科院FTU检测标准学习笔记-基本性能

作者简介:本人从事电力系统多年,岗位包含研发,测试,工程等,具有丰富的经验在配电自动化验收测试以及电科院测试中,本人全程参与,积累了不少现场的经验。

sixtome 1864

力扣: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

【Codecs系列】x265编码器(十二):子像素运动搜索

在基于块运动补偿的视频编码框架中,运动搜索是最为重要的环节之一,同时也是编码端最为耗时的模块。运动搜索包括整像素运动搜索和子像素运动搜索,其中整像素运动搜索已经有很多快速算法,比如经典的三步搜索法、菱形搜索、六边形搜索以及TZSearch等等;但子像素搜索的快速算法却比较少,本文主要讲解x265编码器中的子像素搜索方法以及相关的快速搜索方法。

优快云明星博主,认证博客专家,视频、Matlab领域优质创作者。 747

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

LeetCode 力扣 93. 复原IP地址

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

wind_liang的博客 1019

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

LeetCode 力扣 93. 复原IP地址 restoreIpAddresses

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

motongxue的博客 368

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

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

LeetCode93题:复原IP地址——Python递归与迭代解法

1. LeetCode93题:复原IP地址 给定一个只包含数字的字符串,复原它并返回所有可能的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地址。 示例 1: 输入:s = “25525511135” 输出:[“255.255.11.135”

Zhang Junjie的博客 1709

leetcode(力扣) 93. 复原 IP 地址(回溯)

还有一点就是题目要求不得删改原s字符中的数值,但是题目s所给长度范围又达到20个,而合法ip最大长度也就是每一段都是3个字符,所以最长也就是12个字符,在这里可以设置一个终止条件,就是所给s长度大于12,则直接return。这道题也是分割,而且比上一个字符串分割感觉看上去要清晰一些,也是找组合的题嘛,回溯嘛,你要问我能不能暴力,我只能说, 可以暴力,看到有人这么做了,N层for,写到怀疑人生。这里的参数非常简单,就一个值,就是startindex,用于记录下次从哪里开始遍历。输入:s = “101023”

深度不学习!!的博客 1354
上一篇: git学习2
hellohake
博客等级 码龄10年 4543粉丝 108原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值