题目描述
在基于Internet的程序中,我们常常需要判断一个IP字符串的合法性。
合法的IP是这样的形式:
A.B.C.D
其中A、B、C、D均为位于[0, 255]中的整数。为了简单起见,我们规定这四个整数中不允许有前导零存在,如001这种情况。
现在,请你来完成这个判断程序吧^_^
输入
输入由多行组成,每行是一个字符串,输入由“End of file”结束。
字符串长度最大为30,且不含空格和不可见字符
输出
对于每一个输入,单独输出一行
如果该字符串是合法的IP,输出Y,否则,输出N
样例输入
1.2.3.4 a.b.c.d 267.43.64.12 12.34.56.bb 210.43.64.129 -123.4.5.6
样例输出
Y N N N Y N
# include<iostream>
# include<cstring>
using namespace std;
int main ()
{
char s[100001];
while(cin.getline(s,100001,'\n'))
{
int d=0;
string c="";
string e="";
int f=0;
bool isnot=false;
for(int b=0;b<strlen(s);b++)
{
if(s[b]!='.')
{
d++;
e+=s[b];
}
if(s[b]=='.'||b==strlen(s)-1)
{
f=d;
c=e;
//--------------------------------------------
if(f>=3)
{
if(c[0]<'1'||c[0]>'2')
{
isnot=true;
cout<<"N"<<endl;
break;
}
else
{
if(c[0]=='1')
{
if(c[1]<'0'||c[1]>'9'||c[2]<'0'||c[2]>'9')
{
isnot=true;
cout<<"N"<<endl;
break;
}
}
if(c[0]=='2')
{
if(c[1]<'0'||c[1]>'5'||c[2]<'0'||c[2]>'5')
{
isnot=true;
cout<<"N"<<endl;
break;
}
}
}
}
//------------------------------------------------------
//-------------------------------------------------------
if(f==2)
{
if(c[0]<'0'||c[0]>'9'||c[1]<'0'||c[1]>'9')
{
isnot=true;
cout<<"N"<<endl;
break;
}
}
//-------------------------------------------------------
//------------------------------------------------------
if(f==1)
{
if(c[0]<'0'||c[0]>'9')
{
isnot=true;
cout<<"N"<<endl;
break;
}
}
//--------------------------------------------------------------
e="";
d=0;
}
}
if(isnot==false)
{
cout<<"Y"<<endl;
}
}
}