数据结构与算法 -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的相关知识,小伙伴们学会了吗,快去实现一下吧~

相关文章
|
6月前
|
机器学习/深度学习 存储 算法
【算法训练-回溯算法 三】【回溯算法最佳实践】括号生成、复原IP地址
【算法训练-回溯算法 三】【回溯算法最佳实践】括号生成、复原IP地址
54 0
|
算法
代码随想录算法训练营第二十七天 | LeetCode 93. 复原 IP 地址、78. 子集、90. 子集 II
代码随想录算法训练营第二十七天 | LeetCode 93. 复原 IP 地址、78. 子集、90. 子集 II
58 0
|
算法
代码随想录Day23 回溯算法 LeetCode T93 复原ip地址 LeetCode T78子集 LeetCode T90 子集II
代码随想录Day23 回溯算法 LeetCode T93 复原ip地址 LeetCode T78子集 LeetCode T90 子集II
39 0
算法训练Day28|● 93.复原IP地址 ● 78.子集 ● 90.子集II
算法训练Day28|● 93.复原IP地址 ● 78.子集 ● 90.子集II
|
算法 Java
【算法】字符串复原IP地址,从前序与中序编辑序列构造二叉树 三道算法题
字符串复原IP地址,从前序与中序编辑序列构造二叉树
117 1
【算法】字符串复原IP地址,从前序与中序编辑序列构造二叉树 三道算法题
|
存储 算法
☆打卡算法☆LeetCode 93、复原 IP 地址 算法解析
“给定一个只包含整数的字符串,表示一个IP地址,返回所有可能有效的IP地址,在这些地址中插入点来形成。”
|
25天前
|
算法 安全 数据安全/隐私保护
基于game-based算法的动态频谱访问matlab仿真
本算法展示了在认知无线电网络中,通过游戏理论优化动态频谱访问,提高频谱利用率和物理层安全性。程序运行效果包括负载因子、传输功率、信噪比对用户效用和保密率的影响分析。软件版本:Matlab 2022a。完整代码包含详细中文注释和操作视频。
|
10天前
|
算法 数据挖掘 数据安全/隐私保护
基于FCM模糊聚类算法的图像分割matlab仿真
本项目展示了基于模糊C均值(FCM)算法的图像分割技术。算法运行效果良好,无水印。使用MATLAB 2022a开发,提供完整代码及中文注释,附带操作步骤视频。FCM算法通过隶属度矩阵和聚类中心矩阵实现图像分割,适用于灰度和彩色图像,广泛应用于医学影像、遥感图像等领域。
|
11天前
|
算法 调度
基于遗传模拟退火混合优化算法的车间作业最优调度matlab仿真,输出甘特图
车间作业调度问题(JSSP)通过遗传算法(GA)和模拟退火算法(SA)优化多个作业在并行工作中心上的加工顺序和时间,以最小化总完成时间和机器闲置时间。MATLAB2022a版本运行测试,展示了有效性和可行性。核心程序采用作业列表表示法,结合遗传操作和模拟退火过程,提高算法性能。
|
12天前
|
存储 算法 决策智能
基于免疫算法的TSP问题求解matlab仿真
旅行商问题(TSP)是一个经典的组合优化问题,目标是寻找经过每个城市恰好一次并返回起点的最短回路。本文介绍了一种基于免疫算法(IA)的解决方案,该算法模拟生物免疫系统的运作机制,通过克隆选择、变异和免疫记忆等步骤,有效解决了TSP问题。程序使用MATLAB 2022a版本运行,展示了良好的优化效果。