[华为机试练习题]5.IP地址推断有效性
题目
推断输入的字符串是不是一个有效的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地址推断有效性的更多相关文章
- [华为机试练习题]55.最大公约数 & 多个数的最大公约数
题目 描写叙述: 输入2个数字,最后输出2个数字的最大公约数 题目类别: 位运算 难度: 0基础 执行时间限制: 无限制 内存限制: 无限制 阶段: 入职前练习 输入: 2个整数 输出: 输出数字1和 ...
- [华为机试练习题]50.求M的N次方的最后三位
题目 描写叙述: 正整数M 的N次方有可能是一个很大的数字,我们仅仅求该数字的最后三位 例1: 比方输入5和3 ,5的3次方为125.则输出为125 例2: 比方输入2和10 2的10次方为1024 ...
- C++获取本机用于连接的IP地址
最近写个程序需要获取本机用于连接的IP地址,经过很多的尝试后,最终使用的方法如下: 使用cmd命令 netstat | findstr “192.168.6.66:3333” > D:\ ...
- 如何设置本机电脑的固定IP地址?
最近使用Loadrunner需要用到IP欺骗,但是我打开设置IP欺骗却提示我:IP向导不支持启用DHCP的网卡.您的卡启用了DHCP或者配置了无效设置.请与系统管理员联系. 我就方了,于是百度了一下, ...
- kali机获取不到ip地址解决
一.方法一 重启网卡:/etc/init.d/networking restart 重启kali:reboot 二.方法二 更改网络适配器:虚拟机-可移动设备-网络适配器设置-选择“桥接模式:直接连接 ...
- 验证IP地址的有效性
实力说明 IP地址是网络上每台计算机的标识,在浏览器中输入的网址也是要经过DNS服务器转换为IP地址才能找到服务器. 关键技术 正则表达式
- Jmeter多机并发压测IP地址问题
meter.engine.RemoteJMeterEngineImpl: Local IP address=192.168.56.1 不能成功链家到相应的压力机 解决步骤: 1.找到jmeter.ba ...
- 返回本机的外网ip地址
; ); string ip = tempip.Replace("]", "").Replace(" ...
- VMware虚拟机的CentOS7安装Nginx后本机用CentOS的IP地址无法访问
因为CentOS7的默认防火墙改成了Firewall,不再使用iptables为默认防火墙了 所以需要使用以下命令添加80端口 firewall-cmd --zone=public --add-por ...
随机推荐
- 在u-boot中添加命令
转:http://www.embedu.org/Column/Column464.htm 作者:曾宏安,华清远见嵌入式学院讲师. u-boot是嵌入式系统中广泛使用的一种bootloader.它不仅支 ...
- ThreadLocal用法详解和原理(转)
本文转自https://www.cnblogs.com/coshaho/p/5127135.html 感谢作者 一.用法 ThreadLocal用于保存某个线程共享变量:对于同一个static Thr ...
- 自定义Cell引发的悲剧。。。。
这两天毕设,昨晚微调自定义的cell,之前用mrc的时候直接打开xib布局好自定义cell就行乐,不用去勾选Use Autolayout,可是昨晚开始,自定义cell中,label不能动态调高的问题, ...
- 定时任务框架-quartz
依赖 <!-- 定时任务jar --> <dependency> <groupId>org.quartz-scheduler</groupId> < ...
- LaTeX 相对于 Word 有什么优势?
sjhstone ,本科EE在读 vczh等 276 人赞同 [Word公式进阶请往下翻]有人还写过论文,参见PLOS ONE: An Efficiency Comparison of Documen ...
- 将具有特殊class名img标签替换成[img][/img]标签--javascript正则表达式实践
在项目中,可能有时候需要将一些特殊的东西加一个特别的属性,或者一个特殊的Class.如下: <!-- 第一种写法 --> <img src="abc.jpg" f ...
- 编译安装mysql-5.6.40
编译安装mysql-5.6.40 环境说明 系统版本 CentOS 7.2 x86_64 软件版本 mysql-5.6.40 [root@db01 ~]# mkdir -p /serv ...
- Spring Boot + Spring Data + Elasticsearch实例
Spring Boot + Spring Data + Elasticsearch实例 学习了:https://blog.csdn.net/huangshulang1234/article/detai ...
- 《大话操作系统——做坚实的project实践派》(5)
有人说我不是仅仅会玩X86吗?我如今铁板钉钉的申明:我事实上兼通:ARM.IA-32.IA-32e.AMD64. 了解MIPS.但没做过MIPS由于确实没有对应的MIPS硬件平台.
- 【转】maven常见问题问答
转自:http://www.iteye.com/topic/973166 前言 Maven,发音是[`meivin],"专家"的意思.它是一个很好的项目管理工具,很早就进入了我的必 ...