蒟蒻求助
查看原帖
蒟蒻求助
855663
0x0001cxr楼主2023/1/31 19:28

请各位大佬看看我这写的稀碎的check函数

bool check(string str)
{
	if(str.size() > 25)
	return false;
	if(str[0] != '1' &&  str[0] != '2' &&  str[0] != '3' &&
		str[0] != '4' &&   str[0] != '5' &&   str[0] != '6' &&
		str[0] != '7' &&  str[0] != '8' &&  str[0] != '9' &&  str[0] != '0')
	return false;
	if(str[0] == '0' && (str[1] == '1' ||  str[1] == '2' ||  str[1] == '3' ||
		str[1] == '4' ||   str[1] == '5' ||   str[1] == '6' ||
		str[1] == '7' ||  str[1] == '8' ||  str[1] == '9' ||  str[1] == '0'))
	return false;
	int num1 = 0, num2 =  0;
	int tep1 = 0, tep2 = 0;
	for(int i = 0;i < str.size();i++)
	{
		if(str[i] == '-')
		return false;
		if(str[i] == '.')
		{
			num1++;
			tep1 = i;
		}
		if(str[i] == ':')
		{
		  num2++;
		  tep2 = i;
	  }
	  
	  if(tep2 < tep1 && tep2 != 0 )
	  return false;
		if(num1 > 3 || num2 > 1)
		return false;
	}
	if(num1 != 3 || num2 != 1) 
	return false;
	vector<int> a;
	for(int i = 0;i < str.size();i++)
	{
		if(str[i] == '0' && (str[i + 1] == '1' ||  str[i + 1] == '2' ||  str[i + 1] == '3' ||
		   str[i + 1] == '4' ||   str[i + 1] == '5' ||   str[i + 1] == '6' ||
			 str[i + 1] == '7' ||  str[i + 1] == '8' ||  str[i + 1] == '9' ||  str[i + 1] == '0')
			 &&(str[i - 1] == ':' || str[i - 1] == '.'))
		return false;
		if(str[i] == '1' ||  str[i] == '2' ||  str[i] == '3' ||
		   str[i] == '4' ||   str[i] == '5' ||   str[i] == '6' ||
			 str[i] == '7' ||  str[i] == '8' ||  str[i] == '9' ||  str[i] == '0')
			{
			 	a.push_back(str[i] - '0');
			}
		else if(str[i] == '.' || str[i] == ':')
		{
			if(a.size() > 3)
			return false;
			long long  ans;
			if(a.size() == 1)
			ans = a[0];
			if(a.size() == 2)
			ans = 10 * a[0] + a[1];
			if(a.size() == 3)
			ans = 100 * a[0] + 10 * a[1] + a[2];
			if(ans > 255)
			return false;
			a.clear();
		}
		else if(str[i] == '#')
		{
			if(a.size() > 6)
			return false;
			long long ans;
			if(a.size() == 1)
			ans = a[0];
			if(a.size() == 2)
			ans = 10 * a[0] + a[1];
			if(a.size() == 3)
			ans = 100 * a[0] + 10 * a[1] + a[2];
			if(a.size() == 4)
			ans = 1000 * a[0] + 100 * a[1] + 10 * a[2] + a[3];
			if(a.size() == 5)
			ans = 10000 * a[0] + 1000 * a[1] + 100 * a[2] + 10 * a[3] + a[4];
			if(ans > 65535)
			return false;
			a.clear();
		}	
	}
	return true;
}
2023/1/31 19:28
加载中...