Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Leetcode 93. Restore IP Addresses

Leetcode 93. Restore IP Addresses

作者头像
Tyan
发布于 2022-08-11 07:04:06
发布于 2022-08-11 07:04:06
27800
代码可运行
举报
文章被收录于专栏:SnailTyanSnailTyan
运行总次数:0
代码可运行

文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书

1. Description

2. Solution

**解析:**Version 1,容易想到的方案,枚举.所有可能的位置,然后对四个数字进行检查,如果都合法,则为合法的IP地址,也可以枚举数字。

  • Version 1
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution:
    def restoreIpAddresses(self, s: str) -> List[str]:
        result = []
        chars = list(s)
        length = len(s)
        for i in range(1, length):
            for j in range(i+1, length):
                for k in range(j+1, length):
                    num1 = ''.join(chars[:i])
                    num2 = ''.join(chars[i:j])
                    num3 = ''.join(chars[j:k])
                    num4 = ''.join(chars[k:])
    
                    if self.validify(num1) and self.validify(num2) and self.validify(num3) and self.validify(num4):
                        ip_address = num1 + '.' + num2 + '.' + num3 + '.' + num4
                        result.append(ip_address)
        return result


    def validify(self, num):
        if len(num) == 0:
            return False
        elif len(num) > 1 and num[0] == '0':
            return False
        elif int(num) > 255:
            return False
        return True

**解析:**Version 2,在Version 1的基础上进行剪枝,每轮循环的遍历数量可以再减少一些,当出现数字不合理时,则进行下一次循环。

  • Version 2
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution:
    def restoreIpAddresses(self, s: str) -> List[str]:
        result = []
        chars = list(s)
        length = len(s)

        for i in range(1, 4):
            num1 = ''.join(chars[:i])
            if not self.validify(num1):
                continue
            for j in range(i+1, i+4):
                num2 = ''.join(chars[i:j])
                if not self.validify(num2):
                    continue
                for k in range(j+1, j+4):
                    num3 = ''.join(chars[j:k])
                    num4 = ''.join(chars[k:])
                    if self.validify(num3) and self.validify(num4):
                        ip_address = num1 + '.' + num2 + '.' + num3 + '.' + num4
                        result.append(ip_address)
        return result


    def validify(self, num):
        if len(num) == 0:
            return False
        elif len(num) > 1:
            if num[0] == '0':
                return False

        if int(num) > 255:
            return False
        return True

Reference

  1. https://leetcode.com/problems/restore-ip-addresses/
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
​LeetCode刷题实战93:复原IP地址
https://leetcode-cn.com/problems/restore-ip-addresses/
程序员小猿
2021/01/19
5770
[Leetcode][python]4Sum
来自:博客 需要用到哈希表的思路,这样可以空间换时间,以增加空间复杂度的代价来降低时间复杂度。
蛮三刀酱
2019/03/26
3580
leetcode: 93. Restore IP Addresses
Problem # Given a string containing only digits, # restore it by returning all possible valid IP address combinations. # # For example: # Given "25525511135", # # return ["255.255.11.135", "255.255.111.35"]. (Order does not matter) AC class Solution():
JNingWei
2018/09/27
3330
Leetcode 1-10
常规方法:使用双重循环,第一重从左往右固定索引,计算需要查找的结果,第二层循环从固定索引出发依次向右查找第一层计算的结果。时间复杂度\(O(n^2)\), 空间复杂度\(O(1)\).
努力努力再努力F
2019/05/08
5200
Two Sigma:面试真题 - 编程(下)
量化投资与机器学习微信公众号,是业内垂直于量化投资、对冲基金、Fintech、人工智能、大数据等领域的主流自媒体。公众号拥有来自公募、私募、券商、期货、银行、保险、高校等行业30W+关注者,荣获2021年度AMMA优秀品牌力、优秀洞察力大奖,连续2年被腾讯云+社区评选为“年度最佳作者”。 上一起,QIML为大家分享几道有关Two Sigma面试的计算真题。今天,我们主要为大家分享几道编程真题。 Two Sigma:面试真题(上) 量化对冲基金技术面试中一般都会有pair coding的部分,主要是测试候选
量化投资与机器学习微信公众号
2022/09/22
1K0
Two Sigma:面试真题 - 编程(下)
[Leetcode][python]Restore IP Addresses/复原IP地址
来自: https://shenjie1993.gitbooks.io/leetcode-python/093%20Restore%20IP%20Addresses.html 找出一个由纯数字组成的序列能够构成的不同的IP地址。 注意点: 每个IP段的范围是0-255 要用整个序列,而不是它的子集 例子: 输入: s = “25525511135” 输出: [“255.255.11.135”, “255.255.111.35”]
蛮三刀酱
2019/03/26
8490
LeetCode 93. Restore IP Addresses
题目 class Solution { public: vector<string> ans; vector<string> restoreIpAddresses(string s) { fun(s,0,"",0); return ans; } void fun(string s,int pos,string res,int num) { if(num==
ShenduCC
2020/02/11
3530
Leetcode【227、468、848、1081】
这道题是实现一个基本计算器,即给一个只包括 +、-、*、/、数字和空格的字符串,计算结果。
echobingo
2019/07/10
6200
Leetcode【227、468、848、1081】
[LeetCode题解]开篇!求和问题总结:2Sum/3Sum/4Sum/KSum
之前在美国做访学,日子比较清闲。当时对数据结构和算法几乎一窍不通,便开始在Leetcode上刷算法题,也算是为找工作做准备,经过了一年多,也积累了很多Leetcode题解文章,并在CSDN上开了题解专栏。
Rude3Knife的公众号
2019/08/06
1.7K0
leetcode第一刷_Restore IP Addresses
字符串的问题真是难。一般递归比較好写代码,一般地归还会超时,并且測试用例特别多。。
全栈程序员站长
2022/07/10
2540
pyhon语法学习笔记
以下是我学习python基础语法所完成的操作样例 代码位置:https://github.com/duganlx/fopnp
用户7886150
2021/02/05
4840
Python 核心编程中文第二版课后练习 2.21 答案
2-2 (a) 计算 1 + 2 * 4 (b) 无输出 (c) 一样。无输出语句。 (d) 单独执行无输出,在交互解释器里执行输出结果。 (e)print 1 + 2 * 4 2-4 (a) str = raw_input('input a str:') print str (b) str = raw_input('input a int:') print int(str) 2-5 (a) i = 0 while i <= 10: print i, i += 1 (b) for eachN
mzlogin
2020/04/16
4520
leetcode 93. Restore IP Addresses
题目 Given a string containing only digits, restore it by returning all possible valid IP address combinations. For example: Given “25525511135”, return [“255.255.11.135”, “255.255.111.35”]. (Order does not matter) 给你一个只包含数字的字符串,把其中的数字重组为可能的ip地址组合,不能改变原先
用户1665735
2018/06/20
6650
【力扣算法13】之 12. 整数转罗马数字 python
首先,我们将罗马数字的字符和对应的数值存储在两个数组中。roman_chars数组存储了罗马数字的字符,roman_values数组存储了对应的数值。例如,'I’对应的数值是1,'V’对应的数值是5,以此类推。
全栈若城
2024/02/29
1640
【力扣算法13】之 12. 整数转罗马数字 python
剑指Offer 45-66题(Python版)
题目:LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的5张牌就可以变成“1,2,3,4,5”(大小王分别看作2和4),“So Lucky!”。LL决定去买体育彩票啦。 现在,要求你使用这幅牌模拟上面的过程,然后告诉我们LL的运气如何, 如果牌能组成顺子就输出true,否则就输出false。为了方便起见,你可以认为大小王是0。
小一
2019/08/14
8590
【python】Fraction类详解及生成分数四则运算“试卷”
  使用整数作为分子和分母创建一个分数。在这里,Fraction(16, -10)创建了一个分数,分子为16,分母为-10。由于分母为负数,Fraction对象会自动将其转换为正数,结果为Fraction(-8, 5)。
Qomolangma
2024/07/30
2250
【python】Fraction类详解及生成分数四则运算“试卷”
Backtracking - 93. Restore IP Addresses
Given a string containing only digits, restore it by returning all possible valid IP address combinations.
ppxai
2020/09/23
3210
python笔记3:依次输入3个数排序打
            nums[j],nums[j+1] = nums[j+1],nums[j]
py3study
2020/01/03
7900
Python语言练习
Python程序由指令组成,运行程序时,计算机依据预设好的指令执行程序。 print是最简单,但很常用的指令,它用于将一些信息输出至屏幕上。 下面演示Python中的print指令:
荣仔_最靓的仔
2021/02/02
3.1K0
Python语言练习
python 基础学习随笔
(一)print 字符串的拼接,与range 函数的简单使用 打印一个边长为n 的正方形:( str(), int() 字符串与数字的转换 ) a = int(input('>>>')) for i
江小白
2019/05/22
5880
相关推荐
​LeetCode刷题实战93:复原IP地址
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验