数据结构与算法 -3 :复原IP地址

简介: 首先IP从基本大类分共有五种(分别是A、B、C、D、E类网址),观察这五种网址发现有一个共同点:任何一种IP可以分为四段,每段的十进制数值均小于255,所有数字的位数总和(即字符串的长度)不超过12。

【Leetcode】题目描述


给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。


示例 :


输入: “25525511135”
输出: [“255.255.11.135”, “255.255.111.35”]


基础知识补充(这里讨论的情况是IPV4地址)


首先IP从基本大类分共有五种(分别是A、B、C、D、E类网址),观察这五种网址发现有一个共同点:任何一种IP可以分为四段,每段的十进制数值均小于255,所有数字的位数总和(即字符串的长度)不超过12。


看下IPV4各类地址的范围:


  • A类地址网络号范围:1.0.0.0-126.0.0.0
  • B类地址网络号范围:128.0.0.0-191.255.0.0
  • C地址网络号范围:192.0.0.0-223.255.255.0
  • D类地址范围:224.0.0.0-239.255.255.255
  • E类地址范围:240.0.0.0-255.255.255.254


更多IP相关知识请参考如下网址:https://www.cnblogs.com/lsgxeva/p/9208298.html


思路提供


了解了基础知识补充的内容之后,是不是觉得很简单了呢,直接一种暴力的思路,使用4个for循环,每段循环遍历3次,当且仅当for循环四个变量值之和等于所给字符串长度时,对字符串进行拆分,并判断每段数字是否符合要求(对于每段的整数,只需考虑其大小是否在0-255之间即可),若符合要求,那么对已拆分好的字符串进行复原操作(即每段数字之后加上”.”即可)。


代码展示


  • 复原IP地址[1]


class Solution {
public:
  vector<string> restoreIpAddresses(string s) {
      vector<string> res;
      for (int a = 1; a < 4; ++a)
      for (int b = 1; b < 4; ++b)
      for (int c = 1; c < 4; ++c)
      for (int d = 1; d < 4; ++d)
          if (a + b + c + d == s.size()) {
              int A = stoi(s.substr(0, a));
              int B = stoi(s.substr(a, b));
              int C = stoi(s.substr(a + b, c));
              int D = stoi(s.substr(a + b + c, d));
              if (A <= 255 && B <= 255 && C <= 255 && D <= 255) {
                  string t = to_string(A) + "." + to_string(B) + "." + to_string(C) + "." + to_string(D);
                  if (t.size() == s.size() + 3) res.push_back(t);
              }
          }
      return res;
  }
};


本文总结


在本文中,我们讲解了如何将所给输入的一串数字转换成一个可用的IPV4地址,并且我们也了解部分关于IPV4的相关知识,小伙伴们学会了吗,快去实现一下吧~

相关文章
|
2月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
197 8
|
机器学习/深度学习 存储 算法
【算法训练-回溯算法 三】【回溯算法最佳实践】括号生成、复原IP地址
【算法训练-回溯算法 三】【回溯算法最佳实践】括号生成、复原IP地址
173 0
|
算法
代码随想录算法训练营第二十七天 | LeetCode 93. 复原 IP 地址、78. 子集、90. 子集 II
代码随想录算法训练营第二十七天 | LeetCode 93. 复原 IP 地址、78. 子集、90. 子集 II
136 0
|
算法
代码随想录Day23 回溯算法 LeetCode T93 复原ip地址 LeetCode T78子集 LeetCode T90 子集II
代码随想录Day23 回溯算法 LeetCode T93 复原ip地址 LeetCode T78子集 LeetCode T90 子集II
|
算法 Java
【算法】字符串复原IP地址,从前序与中序编辑序列构造二叉树 三道算法题
字符串复原IP地址,从前序与中序编辑序列构造二叉树
237 1
【算法】字符串复原IP地址,从前序与中序编辑序列构造二叉树 三道算法题
算法训练Day28|● 93.复原IP地址 ● 78.子集 ● 90.子集II
算法训练Day28|● 93.复原IP地址 ● 78.子集 ● 90.子集II
|
存储 算法
☆打卡算法☆LeetCode 93、复原 IP 地址 算法解析
“给定一个只包含整数的字符串,表示一个IP地址,返回所有可能有效的IP地址,在这些地址中插入点来形成。”
|
机器学习/深度学习 人工智能 编解码
顷刻之间 「复原时光」,美图画质修复算法V2全新上线
美图影像研究院(MT Lab)正式推出美图画质修复算法 V2(升级版),全新迭代版本取得重大技术突破,目前已在美图秀秀证件照、工具箱及视频剪辑(照片)中上线该算法。
442 0
顷刻之间 「复原时光」,美图画质修复算法V2全新上线
|
机器学习/深度学习 传感器 人工智能
意念加AI算法「复原」每个手指,智能义肢登上Nature子刊封面
使用「意念」控制机械,让肢体缺失的残疾人过上正常人的生活,这听起来像是出现在电影中的场景。最近,瑞士洛桑联邦理工学院(EPFL)展示的新技术却让科幻变成了现实,他们的研究还登上了最新一期自然杂志子刊《Nature Machine Intelligence》的封面。
379 0
意念加AI算法「复原」每个手指,智能义肢登上Nature子刊封面
|
2月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
314 0

热门文章

最新文章