题解 | #合法IP#
合法IP
https://www.nowcoder.com/practice/995b8a548827494699dc38c3e2a54ee9
#include <cctype> #include <iostream> #include <vector> using namespace std; bool isIp(string ip) { int left = 0, right = 0; int n = ip.size(); vector<int> nums(4); while (right < n) { for (int i = 0; i < 4; ++i) { left = right; if (!isdigit(ip[right])) return false; while (isdigit(ip[right])) right++; string temp = ip.substr(left, right - left); if (temp[0] == '0' && temp.size() > 1) return false; nums[i] = stoi(temp); if (nums[i] < 0 || nums[i] > 255) return false; if (i < 3) { if (right < n && ip[right++] != '.') return false; } } } if (right != n) return false; return true; } int main() { string ip; while (cin >> ip) { if (isIp(ip)) { cout << "YES" << endl; } else { cout << "NO" << endl; } } }