华为OJ ----合法IP

题目:

现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如10.137.17.1,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。

现在需要你用程序来判断IP是否合法。


解题思路:

这道题很简单,只用将输入的字符串中的四个部分的数字提取出来,判断是否在0~255,范围之内就可以了。

#include <iostream>
#include <stdio.h>
#include<string>
using namespace std;
int main()
{
	string str;
	cin>>str;
	string str0,str1,str2,str3;
	int i=0;
	int index=0;
	int num[3]={0};
	while(str[i])
	{
        if(str[i]=='.')
			num[index++]=i;
		i++;
	}
	str0=str.substr(0,num[0]);
	str1=str.substr(num[0]+1,num[1]-num[0]-1);
	str2=str.substr(num[1]+1,num[2]-num[1]-1);
	str3=str.substr(num[2]+1,num[3]-num[2]-1);
	int k0=0,k1=0,k2=0,k3=0;
	for(i=0;i<str0.length();i++)
	{
		k0=k0*10+str0[i]-'0';
	}
	for(i=0;i<str1.length();i++)
	{
		k1=k1*10+str1[i]-'0';
	}
	for(i=0;i<str2.length();i++)
	{
		k2=k2*10+str2[i]-'0';
	}
	for(i=0;i<str3.length();i++)
	{
		k3=k3*10+str3[i]-'0';
	}
	if((k0>255||k0<0)||(k1>255||k1<0)||(k2>255||k2<0)||(k3>255||k3<0))
		cout<<"NO";
	else
		cout<<"YES";
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值