JavaScript|LeetCode|搜索|93.复原IP地址

一维条形码(code 39、code93、code128等) 简单的一个码应用程序,可打印,可保存。可以设置各种条码标准,就是语言是日文的。 立即下载

法1:回溯
看了答案
想法:

  1. IP地址由4部分组成,四部分之间由 . 分隔,如:255.255.255.255(即11111111.11111111.11111111.11111111)
  2. 每部分>=0 && 每部分<= 255
  3. 每部分没有前导零
  4. 当前IP地址已经有4部分 && 输入的字符串已访问完最后一位,则当前IP地址是答案之一,存入
  5. 增加一个部分->继续寻找下一部分->找到所有可能的“下一部分”->删除之前衔接的一个部分(即给当前要删除部分的前一部分衔接其他可能部分的机会)
/** * @param {string} s * @return {string[]} */
var restoreIpAddresses = function(s) {    
    if(s.length == 0) {        
        return [];    
    }    
    var output = [];    
    doRestore(output, s, 1, "");    
    return output;
};

// output: 方便给结果集增加元素
// s: (剩余)输入串,每轮生成IP地址都需要
// k: 正在生成IP地址的第k部分(1, 2, 3, 4)
// partIP: 处于生成过程的IP地址,可能是结果之一function 
doRestore(output, s, k, partIP) {    
    if(k == 5 || s.length == 0) { // 已经生成了4部分,或已经没有剩余的数字供分配        
        if(k == 5 && s.length == 0) { // 两者都满足才说明↓            
            output.push(partIP); // 此时的partIP为答案之一        
        }        
        // 如果:已经生成了4部分,但s仍有数字未分配;        
        // 或如果:s没有数字可分配了,但当前IP地址未生成        
        // 以上两者满足一个,直接返回        
        return;    
    }    
    var i = 0, part = "";    
    for(i = 0; i < s.length && i < 3; i++) {        
        if(i != 0 && s.charAt(0) == '0') {             
            // IP地址的每一部分没有前导零,若当前位置不是s的第一位,但却是0            
            // 则s的第一位0独占一部分,在该部分,不可能再衔接其他数字来组成新部分了            
            break;        
        }        
        part += s.charAt(i);        
        if(Number(part) <= 255) { // IP地址的每一部分 <= 255            
            if(partIP.length > 0) { // 第一部分前没有 .                 
                part = '.' + part;            
            }            
            partIP += part;            
            doRestore(output, s.slice(i + 1), k + 1, partIP);            
            partIP = partIP.slice(0, partIP.length - part.length);            
            if(partIP.length > 0) { // 把之前加的.去掉                
                part = part.slice(1);            
            }        
        }    
    }
}

法2:暴力解法
在题解区看到的暴力解法Java写的,根据解法思想写了如下JavaScript版;这个解法绝了

/** * @param {string} s * @return {string[]} */
var restoreIpAddresses = function(s) {    
    if(s.length == 0) {        
        return [];    
    }    
    var output = [], temp = "";    
    var i = 0, j = 0, k = 0, l = 0;    
    var n1 = 0, n2 = 0, n3 = 0, n4 = 0;    
    for(i = 1; i < 4; i++) {        
        for(j = 1; j < 4; j++) {            
            for(k = 1; k < 4; k++) {                
                for(l = 1; l < 4; l++) {                    
                    if(i + j + k + l == s.length) {                        
                        n1 = Number(s.slice(0, i));                        
                        n2 = Number(s.slice(i, i + j));                       
                        n3 = Number(s.slice(i + j, i + j + k));                        
                        n4 = Number(s.slice(i + j + k));                        
                        if(n1 <= 255 && n2 <= 255 && n3 <= 255 && n4 <= 255) {                            
                            temp = "" + n1 + "." + n2 + "." + n3 + "." + n4;                            
                            if(temp.length == s.length + 3) {                                
                                output.push(temp);                            
                            }                        
                        }                    
                    }                    
                    temp = "";                
                }            
            }        
        }    
    }    
    return output;
};

个人认为这个解法的精妙之处在于利用了类型转换:字符串转换为数字之后,前导零会去除;将每部分数字与255比较之后,符合条件则用“.”衔接,再次比较生成的“IP地址”长度与[(原字符串长度)+3]。

javascript网页输出Code128条码 javascript实现页面输出Code128条码;div绘图模式;无需字体库; 使用方法: Barcode.create({options}).encode("string", type).tostring(); options: barWidth: 条码宽度,必须为1px的整数倍; barHeight:条码高度 type:"A" or "B" or "C" 可以不指定,则自动判断; 例:$('divid').innerHTML = Barcode.create().encode("1234567890abcdef").tostring(); 例: coder = Barcod 立即下载

相关推荐

嵌入式开发必备:手把手教你用DB-9连接器搞定RS-232串口通信(附万用表测试技巧)

本文详细解析了嵌入式开发中RS-232串口通信的硬件连接核心。从DB-9连接器的引脚定义入手,深入讲解DTE与DCE设备角色,明确直连线与交叉线的选择法则,并重点分享了使用万用表进行线缆连通性测试、电压测量及故障诊断的实战技巧,帮助开发者彻底掌握串口通信的硬件连接与排查方法。

tgb345678的博客 1166

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

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

csD_Dscnnnnnnn的博客 463

Cartographer从安装到实战:手把手教你运行2D/3D建图与定位

本文提供了一份详尽的Cartographer从零安装到实战应用的完整指南。内容涵盖环境准备、依赖编译、源码构建等关键步骤,并手把手指导读者运行2D/3D官方数据集进行建图与定位测试。文章深入解析了参数配置与自定义数据适配方法,帮助开发者快速掌握这一强大的实时同步定位与建图工具,并将其应用于机器人导航与自动驾驶等实际场景。

rice5的博客 949

leetcode系列-93.复原 IP 地址

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 地址,这些地址可以通过在

weixin_41198447的博客 556

CanMV K230实战:用MicroPython玩转AI视觉识别(附完整代码)

本文详细介绍了如何使用MicroPython在CanMV K230开发板上实现AI视觉识别,包括环境搭建、摄像头配置、模型部署及优化技巧。通过实战案例(如智能门禁和工业分拣机器人),展示如何快速开发低门槛的嵌入式AI应用,特别适合初学者和嵌入式开发者。

x8y9z0的博客 1142

nRF52811墨水屏时钟DIY:从全刷到局刷的实战改造指南(附完整代码)

本文详细介绍了如何将基于nRF52811的墨水屏时钟从耗电的全屏刷新模式改造为高效的局部刷新模式。通过剖析全刷与局刷的原理差异,提供了从工程架构、驱动层适配到应用层逻辑重构的完整实战指南,并附上关键代码示例。改造后,设备功耗显著降低,续航大幅提升,同时解决了视觉闪烁问题,是DIY低功耗墨水屏应用的实用参考。

weixin_29194693的博客 354

LeetCode(93): 复原IP地址

题目描述: 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。 示例: 输入: "25525511135" 输出: ["255.255.11.135", "255.255.111.35"] 由于每段数字最多只能有三位,而且只能分为四段,所以情况并不是很多,我们可以使用暴力搜索的方法,每一段都循环1到3,然后当4段位数之和等于原字符串长度时,我们进一步判断每段数字是...

weixin_40264260的博客 203

抖音视频数据抓取

最近经常有人问我抓取抖音视频的数据,问我一些很小白的问题,算法给他也不会用。 还是先抓包,获取需要的接口和参数,相关的算法在其它文章里面有描述。 搜索个视频看看 查看抓的包信息: 可以看到,这里是post请求...

2501_91048859的博客 3097

leetcode93:js实现复原IP地址

题目:给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。 示例: 输入: “25525511135” 输出: [“255.255.11.135”, “255.255.111.35”] // 复原ip地址 const str = "25525511135"; // const current = []; let res = []; const restoreIpAddress = ...

sinat_41747081的博客 564

【EDA Tools】Spyglass 检查 Verilog 和 SystemVerilog 混合语言及 Lint 检查

Spyglass可以用于检查混合设计中的语言互操作性和一致性问题。对于设计中包含多种硬件描述语言的情况,Spyglass 能够识别并解析其中的模块及其互连,并对其进行验证。例如,在包含 Verilog 和 VHDL 的混合设计中,Spyglass 会自动识别并解析 Verilog 和 VHDL 文件及其相互连接。通过运行 Spyglass Lint 功能,可以检查混合设计中的语言一致性问题,例如不兼容的数据类型、互操作性问题以及其他可能导致设计故障或不一致的问题。

记录学习历程 5080

网络工程师如何利用Python自动Telnet到N个路由器并执行配置?

telnetlib是Python标准库中的一个模块,专门用于实现Telnet协议。通过telnetlib,我们可以方便地与支持Telnet协议的远程设备进行通信。telnetlib提供了基本的Telnet功能,如连接远程主机、发送命令、读取响应等,使得编写Telnet自动化脚本变得非常简单。文档:可以选择中文:虽然telnetlib的功能相对基础,但对于大多数Telnet操作来说已经足够。通过telnetlib,可以轻松地实现与网络设备的交互,完成自动化配置任务。

网络技术联盟站 298

Leetcode 93 Restore IP Addresses 给定字符串,输出所有正确的ip地址

这道题不是很难,题目如下: Given a string containing only digits, restore it by returning all possible valid IP address combinations. Example: Input: "25525511135" Output: ["255.255.11.135", "255.255.111.35"] ...

ata_123的专栏 896

嵌入式工程师成长之路(3)——PCB设计

带有目的的学:要知道,PCB板子做出来需要我们给厂家哪些东西,我们设计板子的时候,需要遵循哪些设计规范,防止画好也是块废板子。然后再逐步开始学习画板。

云轩阁 8万+

[JavaScript 刷题] 搜索 - 复原 IP 地址, leetcode 93

[JavaScript 刷题] 搜索 - 复原 IP 地址, leetcode 93 github repo 地址: https://github.com/GoldenaArcher/js_leetcode,Github 的目录 大概 会更新的更勤快一些。 题目地址:93. Restore IP Addresses 题目 如下: A valid IP address consists of exactly four integers separated by single dots. Each integ

GoldenaArcher的博客 463

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

leetcode93 复原ip地址

93 restore-ip-addresses 题目 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。 示例: 输入: “25525511135” 输出: [“255.255.11.135”, “255.255.111.35”] 思路 DFS,搜索以i为起始的s[i,i], s[i,i+1], s[i,i+2]是否符合255的规范,符合则加入结果,继续向下搜索。 注意点:00这...

莫,莫,莫! 267

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【1】【leetcode-93】复原IP地址

(不会,典型) 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。 示例: 输入: "25525511135" 输出: ["255.255.11.135", "255.255.111.35"] 1.回溯法+剪枝: public class Solution { public List<String> restoreIpAddresses(St...

weixin_30502965的博客 95

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

93. 复原 IP 地址

本文介绍了如何通过回溯算法解决IP地址分割问题。 关键点包括: 1) 使用递归回溯遍历所有可能的分割方式; 2) 定义isIpAddress函数验证子串是否为有效IP段; 3) 采用数组存储中间结果,简化字符串拼接操作; 4) 实现剪枝优化,当已收集4个有效IP段时检查是否覆盖完整字符串。该方法避免了复杂的字符串操作,通过数组的push/pop操作实现回溯,最后用join方法生成标准IP地址格式。 代码展示了如何将组合问题的解决思路应用到IP地址分割场景中。

qq_52809710的博客 477

LeetCode93 复原 IP 地址

LeetCode93 复原 IP 地址题目解题:回溯 题目 解题:回溯 // javascript var restoreIpAddresses = function(s) { const SEG_COUNT = 4; const segments = new Array(SEG_COUNT); const ans = []; const dfs = (s, segId, segStart) => { // 如果找到了 4 段 IP 地址并且遍历

338

【笔记】JavaScript版数据结构与算法——基础算法之“递归类”(93. 复原IP地址)

93. 复原IP地址

程序边界 628

力扣93. 复原 IP 地址

例如:"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.erase(s.begin() + i + 1);

m0_55620733的博客 190

[LeetCode] Restore IP Addresses 复原IP地址

                  [LeetCode] Restore IP Addresses 复原IP地址 给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。 示例: 输入: "25525511135" 输出: ["255.255.11.135", "255.255.111.35"] IP地址由32位二进制数组成,为便于使用,常以XXX.XXX.XXX.XXX形式...

AcceptedLin的博客 721

剑指 Offer II 087. 复原 IP (javascript)

一、题目地址 https://leetcode-cn.com/problems/0on3uN/ 二、具体代码 /** * @param {string} s * @return {string[]} */ var restoreIpAddresses = function(s) { let result = []; search(s, 1, '', result); return result; }; function search(s, n, ipArr, result)

weixin_45727472的博客 592

[JavaScript 刷题] 搜索 - 单词搜索, leetcode 79

[JavaScript 刷题] 搜索 - 单词搜索, leetcode 79 github repo 地址: https://github.com/GoldenaArcher/js_leetcode,Github 的目录 大概 会更新的更勤快一些。 题目地址:79. Word Search 题目 如下: Given an m x n grid of characters board and a string word, return true if word exists in the grid. The

GoldenaArcher的博客 350

[失业前端恶补算法]JavaScript leetcode刷题笔记 93. 复原 IP 地址

93. 复原 IP 地址

weixin_46463785的博客 161
上一篇: JavaScript子字符串
下一篇: JavaScript|LeetCode|搜索|79.单词搜索
J_learner
博客等级 码龄8年 2粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值