LeetCode93-20.8.9-复原IP地址

【LeetCode第93题】复原IP地址(java实现) 【LeetCode第93题】复原IP地址递归+回溯代码实现总结 题目: 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 ‘.’ 分隔。 示例:输入: “25525511135” 输出: [“255.255.11.135”, “255.255.111.35”] 递归+回溯 题目可以理解为一段字符串分成几断。思路就是先分一段出来,然后再把后面的字符串继续分,这是很常规的递归思想。也就是后续的动作都是重复的 阅读详情

题目链接:LeetCode93
分析:开始觉得还行,刚睡醒有点头昏,想得不是很清楚,细节没考虑到,wrong了很多次,主要想法是状态的变换,每一段的不同取法代表不同变换,有些状态可以到达终点,有些不行,判断就行,但就是这个判断要想清楚,剪枝,也就是提前终止不能到达目的地的状态,这也要想好。
思路:选择了递归,觉得递归通用一些
代码:就我代码来看,可以看出我头脑不是很清楚。

class Solution {
    public List<String> restoreIpAddresses(String s) {
        List<String> ans=new ArrayList<>();
        dfs(s,0,"",0,ans);
        return ans;
    }
    public void dfs(String s,int i,String ip,int cnt,List<String> list){
        if(s.length()-i<4-cnt)return;
        if(s.length()-i>3*(4-cnt))return;
        if(cnt==4){
            list.add(ip);
        }
        String hh=".";
        if(cnt==3)hh="";
        for(int j=1;j<=3;j++){
            if(i+j<=s.length()){
                char a=s.charAt(i);
                if(a=='0'&&j!=1)continue;
                if(j==3){
                    char b=s.charAt(i+1),c=s.charAt(i+2);
                    if(a>'2'||a=='2'&&b>'5'||a=='2'&&b=='5'&&c>'5')continue;
                }
                dfs(s,i+j,ip+s.substring(i,i+j)+hh,cnt+1,list);
            }
        }
    }
}
wpf入门第五篇 WPF with ECharts 前言 本文是wpf入门系列第五篇,面向有winform或者web前端基础的、并且也有C#基础的同学。 ECharts是百度团队开发的开源免费的js图表控件库,非常强大,文档齐全。WPF中使用图表,除了可以选择devexpress或者oxyplot之类的专为wpf开发的图表控件之外,还可以考虑使用 WebBrowser+ECharts 来完成复杂的图表展示,其展示效果不亚于前者。 本文介绍了 WP... 阅读详情

相关推荐

ADS软件操作(8)——负载牵引(Loadpull)

负载牵引:通过不断调节输入和输出端的阻抗,找到让有源器件输出功率最大的输入、输出匹配阻抗。这种方法可以准确地测量出器件在大信号条件下的最优性能,反映出器件输入、输出阻抗随频率喝输入功率变化的特性,为器件和电路的设计优化提供了坚实的基础。白话版:由于通信制式越来越复杂,对放大器的线性度和效率要求越来越高。由于放大器的效率和是个永恒的矛盾,所以如何平衡这样的矛盾达到系统设计的最优就是一个需要解决的难题。如何解决?调节输入和输出端的阻抗也就是负载牵引 (Load-Pull)原理來改善点,从而降低谐波的。

Zhuanzhuyan的博客 4954

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

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

m0_73841621的博客 1679

【无标题】 Python自动化法律文书撰写

Jinja2是一个功能强大的模板引擎,支持丰富的语法和功能。除了条件判断和循环语句外,Jinja2还支持过滤器、宏、继承等高级特性,非常适合处理复杂的文书模板。

master_chenchen的博客 2062

力扣93题:复原 IP 地址

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

weixin_48941116的博客 1490

ESP32开发环境避坑指南:用Thonny烧录MicroPython固件时常见的5个错误及解决方法

本文针对ESP32开发新手,详细解析了使用Thonny IDE烧录MicroPython固件时最常见的5个错误及其解决方案。内容涵盖驱动安装、端口识别、固件烧录失败、版本兼容性、连接不稳定以及文件系统操作异常等核心痛点,并提供硬件层面的深度排查指南,帮助开发者高效搭建稳定的ESP32开发环境。

weixin_29189003的博客 407

一种导弹追踪算法的MATLAB仿真实现

以下是一个用于模拟机动变轨导弹和防空导弹追踪过程的 MATLAB 代码,同时会提供 3D 效果展示。你可以运行这段代码,从而观察机动变轨导弹和防空导弹的速度与位置变化。

SmartGridequation的博客 933

93. 复原 IP 地址

在131.分割回文串中我列举的分割字符串的难点,本题都覆盖了。此外,合法性判断难度大一点,以及增加了剪枝和递归终止时能否收集结果的判断,可以说是131.分割回文串的加强版。在本文的树形结构图中,我已经把详细的分析思路都画了出来,相信大家看了之后一定会思路清晰不少!

YouMing_Li的博客 1716

利用OrthoFinder做泛基因家族聚类分析

这条命令会将 Arabidopsis_thaliana.TAIR10.59_longest_trans.pep.fa 文件中的所有序列ID,去掉ID中的空格后面的部分,只保留 > 后第一个空格之前的基因ID,并将结果保存在 An1.fasta 文件中。muscle 是一种常用的多序列比对工具,用于基因组或蛋白质序列的比对。基因家族(Gene family),是来源于同一个祖先,由一个基因通过基因重复而产生两个或更多的拷贝而构成的一组基因,它们在结构和功能上具有明显的相似性,编码相似的蛋白质产物。

qq_64400864的博客 2749

LeetCode第93题_复原IP地址

有效的 IP 地址由四个整数组成,整数之间用分隔,其中每个整数位于 0 到 255 之间(包含 0 和 255),且不能含有前导零。和是有效的 IP 地址,但是和是无效的 IP 地址。给定一个只包含数字的字符串s,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在s中插入来形成。你不能重新排序或删除s中的任何数字。你可以按任何顺序返回答案。

qq_40263592的博客 1496

基于YOLO的智能视频监控异常行为检测研究:从算法原理到落地部署的全栈实践

本文深入探讨如何利用 YOLO(You Only Look Once)系列算法构建一套端到端的异常行为检测系统。文章首先回顾 YOLOv8 在时空建模上的局限,然后提出“YOLO-STA(Spatio-Temporal Aggregation)”轻量级改进框架,在公开数据集 UCF-Crime 上将异常行为检测的 mAP@0.5 从 72.4 提升到 80.1;接着给出完整训练、推理、部署的 Python 代码(PyTorch + TensorRT),并介绍如何仅用 4 GB 显存的 Jetson Xavi

博客 1324

科研绘图系列:R语言绘制极坐标饼图(pie plot)

科研绘图系列:R语言极坐标饼图(pie plot)

专注生信领域 1052

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

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

zth12212003的博客 1001

jre9下载 jdk9

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

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

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【Leetcode:93. 复原 IP 地址 + dfs】

【Leetcode:93. 复原 IP 地址 + dfs】有效 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 中

Coder_ljw的博客 955

算法leetcode|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 中插入 '.' 来形成。你 不能 重新排序或删除

二当家的白帽子 3916

【每日一题】93. 复原 IP 地址

文章目录题目解题思路代码(C++)回溯总结 题目 题目链接: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 地址,返回所有可能的有效 I

倾心之作 1046

代码随想录算法训练Day28|LeetCode93-复原IP地址、LeetCode78-子集问题、LeetCode90-子集2

正好由四个整数(每个整数位于0到255之间组成,且不能含有前导0),整数之间用'.'分隔。给定一个只包含数字的字符串s,用以表示一个 IP 地址,返回所有可能的,这些地址可以通过在s中插入'.'来形成。你重新排序或删除s中的任何数字。你可以按顺序返回答案。``s` 仅由数字组成。

wish的博客 1058

力扣日记1.28-【回溯算法篇】93. 复原 IP 地址

本题也是一道切割类型的题目

RobinChan730的博客 1222

LeetCode-93. 复原 IP 地址【字符串 回溯】

时间复杂度: O(3^4),IP地址最多包含4个数字,每个数字最多有3种可能的分割方式,则搜索树的最大深度为4,每个节点最多有3个子节点。时间复杂度: O(3^4),IP地址最多包含4个数字,每个数字最多有3种可能的分割方式,则搜索树的最大深度为4,每个节点最多有3个子节点。时间复杂度: O(3^4),IP地址最多包含4个数字,每个数字最多有3种可能的分割方式,则搜索树的最大深度为4,每个节点最多有3个子节点。输出:[“255.255.11.135”,“255.255.111.35”]

zik的博客 1037

LeetCode93. 复原 IP 地址/LCR 087. 复原 IP 地址

例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “192.168@1.1” 是 无效 IP 地址。你可以按任何顺序返回答案。输出:[“10.20.30.40”,“102.0.30.40”,“10.203.0.40”]输出:[“255.255.11.135”,“255.255.111.35”]输出:[“0.10.0.10”,“0.100.1.0”]输入:s = “0000”输入:s = “1111”

m0_59385870的博客 639

leetCode 93.复原 IP 地址 + 回溯算法 + 图解 + 笔记

题目要求:给我们个字符串,切割成一个合法的IP地址(IPv4形式),用以表示一个 IP 地址,返回所有可能的。正好由四个整数(每个整数位于。之间组成,且不能含有前导。给定一个只包含数字的字符串。,这些地址可以通过在。2.确定递归终止条件。

呵呵哒!的博客 1969

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

leetcode 93. 复原 IP 地址 [回溯]

1.题目要求 leetcode 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 中插

jianxuRen的博客 1633

leetcode 93. 复原 IP 地址

给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能的有效 IP 地址,这些地址可以通过在 s 中插入 ‘.’ 来形成。例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “192.168@1.1” 是 无效 IP 地址。输出:[“1.0.10.23”,“1.0.102.3”,“10.1.0.23”,“10.10.2.3”,“101.0.2.3”]输入:s = “101023”

pige666的博客 571

LeetCode 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 中的

2301_80211119的博客 572

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

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

深度不学习!!的博客 1354
上一篇: LeetCode99-20.8.8-恢复二叉搜索树
下一篇: LeetCode696-20.8.10-计数二进制子串
RedDevill
博客等级 码龄8年 2粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值