#include <bits/stdc++.h>
using namespace std;
int n;
char op[100], ad[100];
vector<string> vt;
vector<int> bian;
//判断数字位数
bool wei(char s[100]) {
int sum = 0;
for (int i = 0; i < (int)strlen(s); i++) {
if (s[i] >= '0' && s[i] <= '9') {
sum++;
} else {
if (sum > 5) {
return false;
}
sum = 0;
}
}
return true;
}
//判断格式和数字大小
bool ge(char s[100]) {
vector<int> vt;
vector<char> ch;
int num = 0;
for (int i = 0; i < (int)strlen(s); i++) {
if (s[i] >= '0' && s[i] <= '9') {
num = num * 10 + s[i] - '0';
} else {
vt.push_back(num);
ch.push_back(s[i]);
num = 0;
}
}
vt.push_back(num);
if (vt.size() != 5 || ch.size() != 4) return false;
for (int i = 0; i < (int)vt.size() - 1; i++) {
if (!(vt[i] >= 0 && vt[i] <= 255)) {
return false;
}
}
if (!(vt[vt.size() - 1] >= 0 && vt[vt.size() - 1] <= 65535)) {
return false;
}
for (int i = 0; i < (int)ch.size() - 1; i++) {
if (ch[i] != '.') {
return false;
}
}
if (ch[ch.size() - 1] != ':') {
return false;
}
return true;
}
//判断前导0
bool dao(char s[100]) {
for (int i = 0; i < (int)strlen(s); i++) {
if (s[i] == '0' && s[i + 1] >= '0' && s[i + 1] <= '9') {
return false;
} else {
while (i < (int)strlen(s)) {
if (s[i] >= '0' && s[i] <= '9') i++;
else break;
}
}
}
return true;
}
//判断数字和符号的顺序
bool shun(char s[100]) {
for (int i = 0; i < (int)strlen(s); i++) {
if (!(s[i] >= '0' && s[i] <= '9')) {
return false;
}
if (s[i + 1] == ':' || s[i + 1] == '.') {
i++;
}
}
return true;
}
bool check(char s[100]) {
if (wei(s) && ge(s) && dao(s) && shun(s)) {
return true;
}
return false;
}
int main() {
scanf("%d", &n);
int id = 0;
while (n--) {
scanf("%s%s", op, ad);
id++;
if (!check(ad)) {
printf("ERR\n");
continue;
}
if (op[0] == 'S') {//Server
int flag = 1;
for (int i = 0; i < (int)vt.size(); i++) {
if (vt[i] == ad) {
flag = -1;
break;
}
}
if (flag == 1) {
vt.push_back(ad);
bian.push_back(id);
printf("OK\n");
} else {
printf("FAIL\n");
}
} else {//Client
int flag = -1, ID = -1;
for (int i = 0; i < (int)vt.size(); i++) {
if (vt[i] == ad) {
flag = 1;
ID = bian[i];
break;
}
}
if (flag == 1) {
printf("%d\n", ID);
} else {
printf("FAIL\n");
}
}
}
return 0;
}
有没有大佬能帮我看看怎么回事,75 分,挂了 #13 #14 #19 #20 #21 5 个点。