判断输入的字符串是不是一个有效的IP地址(附世上最全测试数据)

题目标题:

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

详细描述:

请实现如下接口

*pszIPAddr)

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

约束

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

字符串两端含有空格认为是合法IP

字符串中间含有空格认为是不合法IP

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

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

这个题目也非常简单,但是我们的代码经不住测试,为什么呢,因为这个格式要求默认有很多,我们要做细心人!

给出多组测试数据:

/**********************************

NULL

0.0.0.0

01.2.0.6

255.2.256.0

256.22.234

34 .45.345.6

2. 3.3.3

0.1.0.0

00.00.32.67

**********************************/

下面给出代码,欢迎补充!

#include "IPAddressValid.h"#include<iostream>using namespace std;#include "IPAddressValid.h" #include <cstring> #include <iostream> #include <cstdio> using namespace std;bool isIPAddressValid(const char* pszIPAddr){if(pszIPAddr==NULL || pszIPAddr=="") return false;// 请在此处实现int slen=strlen(pszIPAddr);//cout<<slen<<endl;int i,j,k,m,n,sum;int sublen[10];const char *ss=pszIPAddr;<span style="white-space:pre"></span><span style="white-space:pre"></span>//去除头尾空格for(i=0;i<slen && ss[i]==' ';i++);if(i==slen)return false;for(j=slen-1;j>=0 && ss[j]==' ';j–);if(j==0)return false;if(i>=j)return false;<span style="white-space:pre"></span>//判断字符串中间是否有空格,如果有则falsefor(k=i;k<j;k++)if(ss[k]==' ')return false;//cout<<i<<" "<<j<<endl;<span style="white-space:pre"></span>//记录字符串出现的‘.',如果点出现在第一个字符或者相邻的元素也是点则falsem=0;for(k=i;k<=j;k++){if(ss[k]=='.'){sublen[m++]=k;if(k==i || k==j) return false;if(ss[k+1]=='.')return false;}}<span style="white-space:pre"></span>//如果点数不是3个则falseif(m!=3)return false;sublen[m++]=j+1;//for(k=1;k<m;k++)//if((sublen[k]-sublen[k-1])>4)return false;//for(k=0;k<m;k++)//cout<<sublen[k]<<" ";//cout<<endl;<span style="white-space:pre"></span>//判断各子段是否为0开头,如果是则判断是不是本子段只有0,如果不是则falsen=0;k=i;while(n<m){//for(k=i;k<sublen[n] && ss[k]=='0';k++);//if(ss[k]!='0' && k<sublen[n] && k>i)return false;if(ss[k]=='0'){if(k+1<slen && ss[k+1]!='.')return false;}k=sublen[n]+1;n++;}<span style="white-space:pre"></span>//判断各子段转化的整数是否在0~255之间,,如果不是则falsen=0;while(n<m){sum=0;for(k=i;k<sublen[n];k++){if(ss[k]<'0' || ss[k]>'9')return false;sum=sum*10+ss[k]-'0';}if(sum>255)return false;i=sublen[n]+1;n++;}return true;}

也许不是自己该去发挥的地方,还是让自己到最适合自己战斗的方面去吧!勇敢的接受自己的失败,

判断输入的字符串是不是一个有效的IP地址(附世上最全测试数据)

相关文章:

你感兴趣的文章:

标签云: