
#include <iostream>
using namespace std;
int n;
string s;
bool chk(string s)
{
for(int i = 0; i <= s.size() - 1; i++)
if(!((s[i] >= '0' && s[i] <= '9') || s[i] == '.'))
return false;
int cnt = 0;
for(int i = 0; i <= s.size() - 1; i++)
if(s[i] == '.')
cnt++;
if(cnt != 3) return false;
for(int i = 0; i <= s.size() - 2; i++)
if(s.substr(i, 2) == "..")
return false;
for(int i = 0; i <= s.size() - 2; i++)
if(s[i] == '0' && (s[i + 1] >= '0' && s[i + 1] <= '9'))
return false;
if(s[0] == '.' || s[s.size() - 1] == '.') return false;
int a[5];
cnt = 1, a[1] = a[2] = a[3] = a[4] = 0;
for(int i = 0; i <= s.size() - 1; i++)
if(s[i] == '.') cnt++;
else a[cnt] = a[cnt] * 10 + s[i] - '0';
if(a[1] > 255 || a[2] > 255 || a[3] > 255 || a[4] > 255) return false;
return true;
}
int main()
{
cin >> n;
while(n--)
{
cin >> s;
if(chk(s)) cout << "YES" << endl;
else cout << "NO" << endl;
}
return 0;
}
我这份代码怎么错了?谢谢