首页 > 试题广场 >

数字字符串转化成IP地址

[编程题]数字字符串转化成IP地址
  • 热度指数:67569 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
现在有一个只包含数字的字符串,将该字符串转化成IP地址的形式,返回所有可能的情况。
例如:
给出的字符串为"25525522135",
返回["255.255.22.135", "255.255.221.35"]. (顺序没有关系)

数据范围:字符串长度 0 \leq n \leq 12
要求:空间复杂度 ,时间复杂度

注意:ip地址是由四段数字组成的数字序列,格式如 "x.x.x.x",其中 x 的范围应当是 [0,255]。

示例1

输入

"25525522135"

输出

["255.255.22.135","255.255.221.35"]
示例2

输入

"1111"

输出

["1.1.1.1"]
示例3

输入

"000256"

输出

[]
头像 牛客题解官
发表于 2022-04-22 12:48:42
精华题解 题目主要信息: 有一个只包含数字的字符串,将该字符串转化成IP地址的形式 需要返回所有情况,顺序没有问题 举一反三: 本题属于递归+回溯剪枝的类型,动态规划也可以完成,但是不如递归回溯剪枝的解释性强,因此为其他可用递归回溯方式处理的题目作参考 方法一:枚举(推荐使用) 思路: 对于IP字符串,如 展开全文
头像 漫漫云天自翱翔
发表于 2021-07-12 09:31:45
精华题解 题解一:暴力法 题解思路: 暴力去枚举4个位置所占的位数,按照题目要求对每个位置的值进行合法性判断(0<=x<=255) 不合法判断: 1.占的位数不为1,但是其第一位上的值为0; 2. 大于255的复杂度分析:时间复杂度:O(1) 每层循环都是常数级空间复杂度:O( 展开全文
头像 Gemini48
发表于 2021-07-10 16:17:03
精华题解 题意分析 可以返回任何顺序的答案 IP地址不能包含前导0且仅由'.'分割 由于我们需要找出所有可能复原出的 IP 地址,因此可以考虑使用回溯的方法,对所有可能的字符串分隔方式进行搜索,并筛选出满足要求的作为答案。 也可以暴力,也许能AC。(但是...可以作为一种思路吧) 解法一:回溯+剪枝 思路 展开全文
头像 认认真真coding
发表于 2021-07-14 11:28:52
精华题解 题目描述现在有一个只包含数字的字符串,将该字符串转化成IP地址的形式,返回所有可能的情况。例如:给出的字符串为"25525522135",返回["255.255.22.135", "255.255.221.35"]. 方法一:暴力求解求解思 展开全文
头像 华科不平凡
发表于 2020-08-31 17:46:23
DFS+回溯,注意每一部分开头不能为0,如01是非法的,另外每一部分不能大于255: // // Created by jt on 2020/8/31. // #include <string> #include <vector> using namespace std; 展开全文
头像 LaN666
发表于 2020-12-02 10:52:05
观看了题解区大佬后,恍然大悟,其实套回溯的框架就可以做出来了~ import java.util.*; public class Solution { /** * * @param s string字符串 * @return string字符串Array 展开全文
头像 _ynlyxy
发表于 2020-08-13 22:41:21
回溯法插入'.',每次可以插入到1个,2个或者3个字符后面,插入3次之后对得到的字符串进行验证 import java.util.*; public class Solution { /** * * @param s string字符串 * @retur 展开全文
头像 BSF
发表于 2021-10-29 10:43:28
# # # @param s string字符串 # @return string字符串一维数组 # class Solution: def restoreIpAddresses(self , s ): # write code here if len(s 展开全文
头像 摸鱼学大师
发表于 2021-12-06 10:34:57
题目的主要信息: 有一个只包含数字的字符串,将该字符串转化成IP地址的形式 需要返回所有情况,顺序没有问题 方法一:暴力枚举 具体做法: 对于IP字符串,如果只有数字,则相当于需要我们将IP地址的三个点插入字符串中,而第一个点的位置只能在第一个字符、第二个字符、第三个字符之后,而第二个点只能在第 展开全文
头像 OfferCall!
发表于 2021-04-01 08:00:31
将字符串划分成ip地址,需要注意几点:1、ip地址由四个整数组成;2、每个整数的范围是[0,255];3、四个整数通过逗号分隔符连接4、每个整数除了它本身是0的情况之外,不能以0开头我主要采用深度优先搜索+回溯的方法解决 对每一部分的整数的处理方式都是一样的,先取一位数,然后添加到临时要划分的ip字 展开全文
头像 -Nil-
发表于 2022-05-06 09:32:17
n := len(s) //ip地址最小为:1.1.1.1 //最大为255.255.255.255 if n < 4 || n > 12 { return []string{} } ans := []string{} //dfs进行回溯,开始遍历s的索引位置,path 展开全文
头像 空中转体一周半
发表于 2022-03-07 12:20:42
简单易懂思路:递归遍历字符串的每一位,由于每一位只可能是以下两种情况:与前面几位组成未满255,仍能继续往后结合的,与前面几位组成未满255,需要在该位后面加'.'的。因此,在递归种把这两种情况分离即可。采用一个list记录下每个'.'之间的数字,并且结束递归时,这个list的长度应该为4,因为IP 展开全文
头像 牛客281174060号
发表于 2022-04-12 14:24:58
有点难,一直在想怎么用dp解,其实根本不是用dp解的,大意了。 使用递归求解该题,递归函数传进去三个参数,第一个是s:剩余字符串,第二个是num,已经有的ip数字的数量,第三个是ip,目前已经组成好前面部分的ip,如255.255.255。然后如果构成完整的ip了,就存在self.result = 展开全文
头像 牛客449560839号
发表于 2021-10-31 16:49:23
import java.util.*; public class Solution { /** * * @param s string字符串 * @return string字符串ArrayList */ public ArrayLis 展开全文

问题信息

难度:
174条回答 35989浏览

热门推荐

通过挑战的用户

查看代码