首页 > 其他分享 >IP地址判断-编译原理

IP地址判断-编译原理

时间:2024-09-17 15:48:17浏览次数:1  
标签:count return int 编译 IP地址 字符串 原理 false

分析给定字符串是否是IP,我们先考虑IP地址如何构成

a.b.c.d,其中\(a,b,c,d\)均为\(0\)到\(255\)之间的整数

那么我们考虑设计代码框架,如果字符串是IP地址,返回True,否则返回False

bool solve(string s){
    
}

接下来考虑检查IP字符串的基本格式,包含以下规则

  • 所有字符均为阿拉伯数字或.
  • 出现且仅出现三个.
int n=s.length(),Stop_count=0;
//n是字符串长度,Stop_count是点号个数
for(int i=0;i<n;i++){
	if(s[i]=='.')Stop_count++;
	else if(s[i]<0||s[i]>9)return false;
	//如果s[i]既不是点号也不是数字,那么字符串一定不是IP地址
}
if(Stop_count!=3)return false;
//判断点号出现次数

我们还需要判断,IP中出现的四个数字是否为\(0\)到\(255\)之间的整数

我们可以考虑用点号把字符串断开,形成四个新的字符串

vector<string>nums;
string now;
//nums是字符串数组,存下所有的数字串
//now是遍历过程中当前的数字数组
for(int i=0;i<n;i++){
	if(s[i]=='.'){
		nums.push_back(now);
		now.clear();
		//如果s[i]是点号,需要在i处断开,把i以前的数字和i以后的数字分开
	}
	else{
		now.push_back(s[i]);
		//否则把字符正常加入即可
	}
}
nums.push_back(now);
//最后还需要加入一次

最后判断nums数组中的每个数字串是否是\(0\)到\(255\)之间的数字

for(int i=0;i<nums.size();i++){
    string num=nums[i];
    if(num.size()>1&&num[0]=='0')return false;
    //0以外的数字不能有前导0
    int x=stoi(num);
    //stoi可以直接把合法的字符串转化为数字
    if(x<0||x>255)return false;
}
return true;
//如果上述所有条件都满足,那么一定是合法IP地址

代码汇总

bool solve(string s){
	int n=s.length(),Stop_count=0;
    //n是字符串长度,Stop_count是点号个数
    for(int i=0;i<n;i++){
        if(s[i]=='.')Stop_count++;
        else if(s[i]<0||s[i]>9)return false;
        //如果s[i]既不是点号也不是数字,那么字符串一定不是IP地址
    }
    if(Stop_count!=3)return false;
    //判断点号出现次数
    vector<string>nums;
    string now;
    //nums是字符串数组,存下所有的数字串
    //now是遍历过程中当前的数字数组
    for(int i=0;i<n;i++){
        if(s[i]=='.'){
            nums.push_back(now);
            now.clear();
            //如果s[i]是点号,需要在i处断开,把i以前的数字和i以后的数字分开
        }
        else{
            now.push_back(s[i]);
            //否则把字符正常加入即可
        }
    }
    nums.push_back(now);
    //最后还需要加入一次
    for(int i=0;i<nums.size();i++){
        string num=nums[i];
        if(num.size()>1&&num[0]=='0')return false;
        //0以外的数字不能有前导0
        int x=stoi(num);
        //stoi可以直接把合法的字符串转化为数字
        if(x<0||x>255)return false;
    }
    return true;
    //如果上述所有条件都满足,那么一定是合法IP地址
}
bool solve(string s){
	int n=s.length(),Stop_count=0;
    for(int i=0;i<n;i++){
        if(s[i]=='.')Stop_count++;
        else if(s[i]<0||s[i]>9)return false;
    }
    if(Stop_count!=3)return false;
    vector<string>nums;
    string now;
    for(int i=0;i<n;i++){
        if(s[i]=='.'){
            nums.push_back(now);
            now.clear();
        }
        else{
            now.push_back(s[i]);
        }
    }
    nums.push_back(now);
    for(int i=0;i<nums.size();i++){
        string num=nums[i];
        if(num.size()>1&&num[0]=='0')return false;
        int x=stoi(num);
        if(x<0||x>255)return false;
    }
    return true;
}

标签:count,return,int,编译,IP地址,字符串,原理,false
From: https://www.cnblogs.com/Linxrain/p/18417218

相关文章

  • 【电气设计 - 隔离变压器】隔离变压器的原理和作用
    隔离变压器的作用FunctionofanIsolationTransformerIsolationtransformersofferphysicalandelectricalseparationbetweentwocircuits.Theytransmitelectricalenergyfromtheprimarytothesecondaryusingmagneticcoupling,isolatingandprotectinge......
  • 基于MATLAB的自动控制原理滞后校正仿真
            串联滞后校正(LagCompensation)是一种用于提高系统稳态精度的控制器设计方法。通过在控制系统中引入一个滞后校正网络,可以在保持系统稳定性的同时减少稳态误差。它的主要作用是**通过增加系统的低频增益来提高稳态精度,同时尽量不破坏系统的动态性能和稳定性。......
  • Facebook直播限流是什么原因?是ip地址导致的吗
    随着社交媒体和直播行业的蓬勃发展,Facebook直播已成为众多企业和个人进行品牌推广、产品展示和互动交流的重要平台。然而,在享受直播带来的便利与效益的同时,不少用户也面临着直播限流的困扰。本文将探讨Facebook直播限流的原因,并提出相应的应对策略。一、理解Facebook直播限流......
  • Facebook直播限流是什么原因?是ip地址导致的吗
    随着社交媒体和直播行业的蓬勃发展,Facebook直播已成为众多企业和个人进行品牌推广、产品展示和互动交流的重要平台。然而,在享受直播带来的便利与效益的同时,不少用户也面临着直播限流的困扰。本文将探讨Facebook直播限流的原因,并提出相应的应对策略。一、理解Facebook直播限流......
  • Oliver编译安装(Windows10+VisualStudio2022)
    Oliver是一个开源的非线性视频编辑器。主要基于Qt和FFmpeg开发。前置条件电脑上需要的环境Qt(>=5.15)VisualStudio(2022,其他版也可)vcpkg软件安装安装Qt5.15令人糟糕的是,Qt如今变得不太容易安装。自从Qt5.15以后的版本,就取消了离线安装。所有的Qt后序版本就只能通......
  • 大数据技术原理与应用——从入门到文档数据库
    大数据技术原理与应用3次信息化的浪潮研究问题的四个阶段大数据技术的层次大数据的计算模式PaaS物联网的概念云计算、大数据、物联网之间的关系Hadoop应用现状选择Hdoop需要考虑的因素Hadoop的定量评分(满分为5分)总体评价Ubuntu的一些基本知识(之所以不......
  • 1030-基于51单片机的SPWM波(数码管)原理图、流程图、物料清单、仿真图、源代码
    1030-基于51单片机的SPWM波(数码管)原理图、流程图、物料清单、仿真图、源代码功能介绍:要求能够输出SPWM并且测量输入正弦波的频率并显示。直流电压通过DC-AC电路转为方波,搭建检测电路进行滤波和调节,得到正弦波,单片机采集该正弦波的频率,并显示。有哪些资料:1、仿真工程文......
  • 关于IP地址、子网掩码、主机地址和网络地址的关系的详细例子
    前言:大家好很高兴我们又见面了,那么在这一篇博客中我将简单论述IP地址、子网掩码、主机地主和网络地址的关系.以及如何进行转换,方便大家理解与记忆.        :)关于IP地址、子网掩码、主机地主和网络地址的关系:####基本概念* **IP地址**:由32位(4个字节)组成,......
  • VECTOR 变种管理(IDM)原理
     一、CONFIGURATOR评判准则criterion评判准则是通过一个变量值判断变种的方法二、导入多个变种的DBC在inputfiles里导入DBC,选择变种。导入以后,工具自动生成变种配置xml文件。三、查看CAN/CANIF/COM/PDUR模块在CONFIGURATOR里可以查看CAN相关模块的配置,RXPDU按照......
  • 计算机组成原理与嵌入式系统(1)计算机系统的基本结构组成与冯·诺依曼架构
    目录前言计算机系统的结构组成与工作原理基本构成与组成机器语言指令微程序硬连逻辑CISC与RISC思想课程研究目的计算机系统的工作原理——冯·诺依曼架构基于总线的冯·诺依曼架构模型机总线存储器子系统输入/输出子系统CPU子系统运算器控制器寄存器阵列缓......