题解 | #合法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;
}


全部评论
通不过“1.38..100”这样的用例
点赞 回复 分享
发布于 2022-08-07 16:18

相关推荐

2 收藏 评论
分享
牛客网
牛客企业服务