站外题求助!!!
  • 板块学术版
  • 楼主Ian_NIE
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/6/14 17:49
  • 上次更新2024/6/14 17:56:22
查看原帖
站外题求助!!!
602171
Ian_NIE楼主2024/6/14 17:49

#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;
}

我这份代码怎么错了?谢谢

2024/6/14 17:49
加载中...