题解 | 合法IP C++最新做法
合法IP
https://www.nowcoder.com/practice/995b8a548827494699dc38c3e2a54ee9
#include <cctype> #include <cstdio> #include <iostream> #include <string> #include <vector> using namespace std; bool isValidIP(vector<string>& vs) { if (vs.size() != 4) return false; for (auto& str : vs) { // cout << str << " " << endl; if(str.length() > 1 && str[0] == '0') return false; int sum = 0; for (int i = 0; i < str.length(); i++) { if (isdigit(str[i])) sum = sum * 10 + str[i] - '0'; else return false; } if (sum < 0 || sum > 255) return false; } return true; } int main() { string sInput; while (getline(cin, sInput)) { int index = 0; vector<string> vs; while(sInput[index] == '.') index++; while (index < sInput.length()) { auto pos = sInput.find('.', index); // cout << pos << endl; string temp = sInput.substr(index, pos - index); index = pos + 1; if (temp.empty()) continue; vs.push_back(temp); if (pos == string::npos) break; } bool res = isValidIP(vs); cout << (res ? "YES" : "NO") << endl; } return 0; } // 64 位输出请用 printf("%lld")