#include <cctype> #include <iostream> #include<vector> using namespace std; int main() { string s; vector<string>vec; int count, j = 0; while (cin >> s) { // 注意 while 处理多个 case for (int i = 0; i < s.size(); i++) { //如果输入的符号既不是数字也不是. if (!isdigit(s[i]) && s[i] != '.') { cout << "NO"; return 0; } //添加ip的每部分到数组中 if (s[i] == '.' && i > j) { vec.push_back(s.substr(j, i - j)); j = i + 1; count++; } } //添加ip的最后一部分到数组中 if (j <= s.size() - 1) { vec.push_back(s.substr(j)); } //如果数组长度不是4 if (vec.size() != 4) { cout << "NO"; return 0; } //如果数组的某一位不在ip合法数字范围内 for (auto i : vec) { if ((stoi(i) < 0 || stoi(i) > 255) || (i.size() > 1 && i[0] == '0')) { cout << "NO"; return 0; } } cout << "YES"; } } // 64 位输出请用 printf("%lld")
笨方法