题目

推断输入的字符串是不是一个有效的IP地址

具体描写叙述:

请实现例如以下接口

boolisIPAddressValid(constchar* pszIPAddr)

输入:pszIPAddr 字符串

输出:true 有效的IP地址,false,无效的IP地址

约束

输入IP为XXX.XXX.XXX.XXX格式

字符串两端含有空格觉得是合法IP

字符串中间含有空格觉得是不合法IP

相似于 01.1.1.1, 1.02.3.4 IP子段以0开头为不合法IP

子段为单个0 觉得是合法IP,0.0.0.0也算合法IP

知识点: 字符串

题目来源: 111

练习阶段: 中级

代码

/*---------------------------------------
* 日期:2015-06-25
* 作者:SJF0115
* 题目:IP地址推断有效性
* 来源:华为上机
-----------------------------------------*/
#include <iostream>
#include <cstring>
using namespace std; bool isIPAddressValid(const char* pszIPAddr)
{
if(pszIPAddr == NULL)
{
return false;
}//if
int size = strlen(pszIPAddr);
// 去除前导0
int start = 0;
while(pszIPAddr[start] == ' ')
{
++start;
}//while
// 去除后导0
int end = size - 1;
while(pszIPAddr[end] == ' ')
{
--end;
}//while
int num = 0;
int pointCount = 0;
int first = start;
for(int i = start;i <= end+1;++i)
{
if(pszIPAddr[i] >= '0' && pszIPAddr[i] <= '9')
{
num = num * 10 + pszIPAddr[i] - '0';
}//if
else if(pszIPAddr[i] == '.' || i == end + 1)
{
if(i == start || (pszIPAddr[i-1] < '0' || pszIPAddr[i-1] > '9'))
{
return false;
}
// 验证.个数
if(pszIPAddr[i] == '.')
{
++pointCount;
if(pointCount > 3)
{
return false;
}//if
}//if
// 验证数据
if(num > 255 || num < 0)
{
return false;
}//if
// 以0开头且不为0 比如:023
if(num != 0 && pszIPAddr[first] == '0')
{
return false;
}//if
first = i+1;
num = 0;
}//else
else
{
return false;
}//else
}//for
if(pointCount != 3)
{
return false;
}
return true;
}

[华为机试练习题]5.IP地址推断有效性的更多相关文章

  1. [华为机试练习题]55.最大公约数 &amp; 多个数的最大公约数

    题目 描写叙述: 输入2个数字,最后输出2个数字的最大公约数 题目类别: 位运算 难度: 0基础 执行时间限制: 无限制 内存限制: 无限制 阶段: 入职前练习 输入: 2个整数 输出: 输出数字1和 ...

  2. [华为机试练习题]50.求M的N次方的最后三位

    题目 描写叙述: 正整数M 的N次方有可能是一个很大的数字,我们仅仅求该数字的最后三位 例1: 比方输入5和3 ,5的3次方为125.则输出为125 例2: 比方输入2和10 2的10次方为1024 ...

  3. C++获取本机用于连接的IP地址

    最近写个程序需要获取本机用于连接的IP地址,经过很多的尝试后,最终使用的方法如下: 使用cmd命令    netstat  | findstr “192.168.6.66:3333” > D:\ ...

  4. 如何设置本机电脑的固定IP地址?

    最近使用Loadrunner需要用到IP欺骗,但是我打开设置IP欺骗却提示我:IP向导不支持启用DHCP的网卡.您的卡启用了DHCP或者配置了无效设置.请与系统管理员联系. 我就方了,于是百度了一下, ...

  5. kali机获取不到ip地址解决

    一.方法一 重启网卡:/etc/init.d/networking restart 重启kali:reboot 二.方法二 更改网络适配器:虚拟机-可移动设备-网络适配器设置-选择“桥接模式:直接连接 ...

  6. 验证IP地址的有效性

    实力说明 IP地址是网络上每台计算机的标识,在浏览器中输入的网址也是要经过DNS服务器转换为IP地址才能找到服务器. 关键技术 正则表达式

  7. Jmeter多机并发压测IP地址问题

    meter.engine.RemoteJMeterEngineImpl: Local IP address=192.168.56.1 不能成功链家到相应的压力机 解决步骤: 1.找到jmeter.ba ...

  8. 返回本机的外网ip地址

     ;             );             string ip = tempip.Replace("]", "").Replace(" ...

  9. VMware虚拟机的CentOS7安装Nginx后本机用CentOS的IP地址无法访问

    因为CentOS7的默认防火墙改成了Firewall,不再使用iptables为默认防火墙了 所以需要使用以下命令添加80端口 firewall-cmd --zone=public --add-por ...

随机推荐

  1. 课程学习:Linux系统管理

    版本 内核版本 发行版本 常见Linux发行版本 ubuntu: 易用,可靠:技术支持付费,生态稍弱 debin: 精简,稳定,可靠; 更新较慢, 无技术支持,软件过时, 企业不太用 opensuse ...

  2. 【spring】【spring mvc】【spring boot】获取spring cloud项目中所有spring mvc的请求资源

    实现的方法: 1.在父级项目中 或者 每个微服务都引用的项目中添加实体类Resource 2.在父级项目中 或者 每个为服务都引用的项目中写一个工具类,作用是用来获取请求资源 3.在每一个微服务的启动 ...

  3. XenApp应用虚拟化介绍

    https://wenku.baidu.com/view/635223c26137ee06eff91864.html

  4. 三种常见的部署Kubernetes的方式

    三种常见的部署Kubernetes的方式 嘹亮的小号 Ghostcloud-001工号,资深Docker玩家,分布式系统研发11年. ​关注他   容器技术将应用程序及其依赖关系与操作系统进行分离,不 ...

  5. ashx 下载文件

    ashx后台 byte[] file =GetFileByte(""); Response.ContentType = "application/octet-stream ...

  6. 各种软核处理器二进制文件FPGA初始化文件生成程序

    不管是MIPS, Nios II, MicroBlaze, MSP430, 8051, OpenRISC, OpenSPARC, LEON2/LEON3等等软核处理器,在FPGA上实现的时候我们通常需 ...

  7. H5+CSS3简单动画 知识点 汇总

    乱入几个:  1.h5的一个语义化标签   figure :用于规定独立的流内容(图像 图表 照片 代码等)   figcapition:与figure配套使用,用于标签定义figure元素标题 2. ...

  8. SQL通过身份证获取信息

    SELECT t.identity_number '身份证号',SUBSTR(t.identity_number,1,2) AS "省份",SUBSTR(t.identity_nu ...

  9. spinner自定义,效果如腾讯QQ账号选择时候的下拉列表

         下拉列表在android中自带spinner的有时候不太适合我们的界面,我们希望有自己的一种显示方法,那怎么办?自定义Spinner.效果如QQ账号选择一样.如图所以. 这种效果,如果你喜欢 ...

  10. TestNG 五 运行TestNG

    一.并行运行于超时 可以通过在suite标签中使用 parallel 属性来让测试方法运行在不同的线程中.这个属性可以带有如下这样的值: <suite name="My suite&q ...