[华为机试练习题]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],"专家"的意思.它是一个很好的项目管理工具,很早就进入了我的必 ... 
