题目

推断输入的字符串是不是一个有效的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;}//ifint size = strlen(pszIPAddr);// 去除前导0int start = 0;while(pszIPAddr[start] == ' '){++start;}//while// 去除后导0int end = size - 1;while(pszIPAddr[end] == ' '){--end;}//whileint 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';}//ifelse 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 比如:023if(num != 0 && pszIPAddr[first] == '0'){return false;}//iffirst = i+1;num = 0;}//elseelse{return false;}//else}//forif(pointCount != 3){return false;}return true;
}

[华为机试练习题]5.IP地址推断有效性相关推荐

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

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

  2. [华为机试练习题]60.水仙花数

    题目 描述: 水仙花数又称阿姆斯特朗数. 水仙花数是指一个n 位数( n≥3 ),它的每个位上的数字的n 次幂之和等于它本身.(例如:1^3 + 5^3 + 3^3 = 153) 求输入的数字是否为水 ...

  3. [华为机试练习题]51.数列求和

    题目 描写叙述: 题目描写叙述 编敲代码,输入一个正整数n.求下列算式的值.要求定义和调用函数fact(k)计算k的阶乘. 1+1/2!+ .... +1/n! 计算结果保存在double类型变量中. ...

  4. [华为机试练习题]37.合唱队

    题目 描述: 计算最少出列多少位同学,使得剩下的同学排成合唱队形说明:N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学 ...

  5. (记录)华为机试练习题13—句子逆序

    华为机试练习题13-句子逆序 题目描述 输入描述: 输出描述 例如: 代码(Java) 题目描述 将一个英文语句以单词为单位逆序排放.例如"I am a boy",逆序排放后为&q ...

  6. [华为机试练习题]44.24点游戏算法

    题目 注意: 6 + 2 * 4 + 10 = 24 不是一个数字一个数字的计算 代码 /*--------------------------------------- * 日期:2015-07-0 ...

  7. [华为机试练习题]28.报数

    题目 描述: 有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出,问最后留下的那位是原来第几号. 题目类别: 数组,指针 难度: 初级 运行时间限制: 10Sec 内存限 ...

  8. 牛客网-华为机试练习题 16 购物单

    描述 王强今天很开心,公司发给N元的年终奖.王强决定把年终奖用于购物,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子: 主件 附件 电脑 打印机,扫描仪 书柜 ...

  9. HJ77 火车进站 —— 华为机试练习题

    一.题目 描述 给定一个正整数N代表火车数量,0<N<10,接下来输入火车入站的序列,一共N辆火车,每辆火车以数字1-9编号,火车站只有一个方向进出,同时停靠在火车站的列车中,只有后进站的 ...

最新文章

  1. 数据库表(字段类型、约束、截断表、修改表字段、重命名表)
  2. MySQL学习随笔记录
  3. java.lang.IllegalArgumentException: Path index does not start with a / character
  4. 基于cobbler实现自动安装系统
  5. characteriscation in English debate
  6. 「Python」ubuntu使用make命令安装python(带详细解释和防坑指南)
  7. Java集合框架-重构设计
  8. python列表元素都加倍_关于python列表增加元素的三种操作方法
  9. 飞鸽传书:摆一摆自己的C++程序设计入行历程
  10. overflow encountered in ubyte_scalars像素加减运算溢出异常
  11. 苹果手机上网速度慢_手机信号明明满格却上不去网?4招帮你搞定它!
  12. fataexception matlab,人工势场法路径规划(附MAtlab程序)
  13. 13、图灵机器人能力
  14. 5-7 六度空间 (30分)
  15. OSChina 周五乱弹 —— 闹钟一响就睡觉
  16. Android之头像图片变圆形
  17. php mpdf导航栏信息,php – 我想使用mpdf在pdf中设置页眉和页脚
  18. 霍兰德air适合学计算机吗,霍兰德职业兴趣测验(含职业代码)
  19. Office 连供打印机无法进纸怎么办 卡纸,塞纸怎么办
  20. 我奋斗了18年才和你坐在一起喝咖啡(转)

热门文章

  1. android studio 设置控制台字体大小
  2. Tomact和MySql搭建android简单服务器
  3. ElasticSearch,docker 安装ElasticSearch,Springboot 使用 ElasticSearch JavaAPI
  4. 探讨8.0版本下后台service存活机制及保活
  5. (2016北京集训十二)【xsy1542】疯狂求导
  6. pyhton3 os模块
  7. 更方便的函数回调——Lambda
  8. 康托尔定理是如何证明的?
  9. [JDK]找不到或无法加载主类 java
  10. Hibernate的几个关键类的详解及Hibernate的运行过程