合法ip算法实现——输入字符串,输出所有合法的ip

论坛 期权论坛 脚本     
匿名技术用户   2021-1-5 16:35   631   0

输入为一串0~9之间的数字字符,不改变字符串中字符的前后顺序,输出所有合法的ip地址。IPV4下用一个32位无符号整数来表示一个ip地址,一般用点分方式来显示,点将ip地址分成4个部分,如“10.137.17.1”。所以要输出所有合法ip,1、将输入的字符串截断成4部分;2、每部分字符串个数大于0小于4;3、每部分字符串的“值”不能大于255。考虑到这三个方面,代码如下。

#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <string>

using namespace std;

int main(){
 string ip;
 cin >> ip;
 int length = ip.size();
 if (length>12||length<4)
 {
  return 0;
 }
    //每个子字符串的长度为1~3
 for ( int i = 1; i < 4; i++){
  for (int j = 1; j < 4; j++){
   for (int k = 1; k < 4; k++){
    for (int m = 1; m < 4; m++){
     if (
                        //四个子字符串长度之和为string ip的长度。
                        (length==i+j+k+m)
                        //每个子字符串的“值”不能超过255
      &&(ip.substr(0,i)<="255")
      &&(ip.substr(i,j)<="255")
      &&(ip.substr(i+j,k)<="255")
      &&(ip.substr(i+j+k,m)<="255")
      ){
      cout << ip.substr(0, i) << "." << ip.substr(i, j) << "." << ip.substr(i+j, k) << "." << ip.substr(i+j+k, m) << endl;
     }
    }
   }
  }
 }
 system("pause");
 return 0;
}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP