题解 | #合法IP#
合法IP
http://www.nowcoder.com/practice/995b8a548827494699dc38c3e2a54ee9
信心满满提交,然后定定定定定语从句
/*hj90合法ip 32位无符号整数来表示,一般用点分方式来显示, 点将IP地址分成4个部分,每个部分为8位,表示 成一个无符号整数(因此正号不需要出现),如10.137.17.1, 是我们非常熟悉的IP地址,一个IP地址串中没有空格出现 (因为要表示成一个32数字)。 */ #include <iostream> using namespace std; int main() { string a; int b[18]={0}; int t=0; int count=0; getline(cin,a); for(int i=0;i<a.length();i++) { if(a[i]!='.'&&!(a[i]>='0'&&a[i]<='9')||!(a[i-1]>='0'&&a[i-1]<='9')&&a[i]=='0'&&(a[i+1]>='0'&&a[i+1]<='9')||a[i]=='.'&&!(a[i+1]>='0'&&a[i+1]<='9')||a[0]=='.')//异常字符,前导零 ,空点 { cout<<"NO"<<endl; return 0; } if(a[i]=='.') t++; else b[t]=b[t]*10+a[i]-'0'; } if(t!=3)//长度不是4 { cout<<"NO"<<endl; return 0; } for(int i=0;i<=t;i++) { // cout<<b[i]<<endl; if(b[i]>=0&&b[i]<=255) count++; } if(count==4) cout<<"YES"<<endl; else cout<<"NO"<<endl; }