华为oj-判断输入的字符串是不是一个有效的IP地址
2015-03-03 20:32
295 查看
题目标题:
判断输入的字符串是不是一个有效的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
C语言代码:
判断输入的字符串是不是一个有效的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
C语言代码:
#include "IPAddressValid.h" #include <string.h> bool isIPAddressValid(const char* pszIPAddr) { // 请在此处实现 if(pszIPAddr == 0 || pszIPAddr == "") return false; char *p=const_cast<char*>(pszIPAddr); char *pre=0; bool flag=true; bool last=false; int pCount=0; //point number; int num=0; while(*p==' ')//不考虑前面的空格 p++; //if(*p=='.') // return false; while(*p!='\0'){ if (*p != '.'){ if(pCount < 3 && (*p>'9'||*p<'0')) return false; if(pCount == 3){ if(*p != ' ' && (*p>'9'||*p<'0'))// return false; if(*p == ' ')//第三个'.'后面有空格,应该为结尾的空格 last = true; if(last && *p<='9'&&*p>='0') return false; } if(flag)//新的子段开始。 pre = p; flag=false; }else{//发现一个"." pCount++; if(!flag){ if((p-pre>1&&*pre=='0')||(p-pre>3))//排除子段以0开头,或者子段的长度大于3 return false; if(p-pre == 3){ num=(*pre-'0')*100; num+=(*(++pre)-'0')*10; num+=(*(++pre)-'0'); if(num>255) return false; } }else if(p-pre==1){//连续出现两个'.' return false; }else return false; flag=true;//下一个新的子段开始 pre=p; } p++; } if (pCount!=3 || *pre=='.'|| (p-pre>1&&*pre=='0'))//如果不是三个子段,或者最后一个字符为'.',或者最后一个子段第一个字符为'0'。 return false; num=0; while(*pre<='9'&&*pre>='0'){ num=num*10; num=num+(pre[0]-'0'); pre++; } if(num>255) return false; return true; }
相关文章推荐
- 2014华为机试-判断输入的字符串是不是一个有效的IP地址
- 判断输入的字符串是不是一个有效的IP地址
- 面试题整理17 输入一个字符串判断一个字符串是否是有效ip地址
- 面试题整理17 输入一个字符串判断一个字符串是否是有效ip地址
- 判断一个字符串是否为有效ip地址
- 随机输入一个数,判断它是不是对称数(回文数)(如3,121,12321,45254)。不能用字符串库函数
- JAVA中 怎么判断输入的字符串是不是一个数字
- 【华为OJ】1. 输入字符串和一个字符,找到相同字符个数,不区分大小写!!!
- 判断一个字符串是不是ip地址
- 判断某个字符串是不是一个合法的IP地址
- 华为OJ:2199 判断输入字符串中的括号匹配
- 用shell判断一个字符串是不是全为数字
- java判断输入的字符串是否是一个IP
- 自己写的一个判定字符串是不是IP地址的方法(= =!漏洞一堆,有待完善。。。)
- Delphi 判断字符串是不是有效的时间
- 判断一个字符串是不是纯数字字符串
- 如何判断一个网络路径是不是有效路径
- 每天学习一算法系列(9) (输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果)
- Asp.net 判断输入的字符串是不是数字
- 输入三个数,用条件表达式,不能用if语句,判断是不是两个奇数一个偶数,是就输出Y,不是就输出N。