题解 | #合法IP#
合法IP
https://www.nowcoder.com/practice/995b8a548827494699dc38c3e2a54ee9
#include <iostream>
using namespace std;
#include<sstream>
#include<vector>
bool isValid(string ip){
stringstream ss(ip);
string segment;
vector<string> parts;
while(getline(ss,segment,'.')){
if(segment.empty()) return false;
parts.push_back(segment);
}
if(parts.size()!=4) return false; //4部分
for(string part :parts){
if(part=="0") return true; //单独一个0的情况是合法的
if(part[0]=='0') return false; //前导零的情况
if(stoi(part)<0||stoi(part)>255) return false; //范围
for(char c:part){ //非数字情况
if(!isdigit(c)) return false;
}
}
return true;
}
int main() {
string ip;
while (getline(cin,ip)) {
if(isValid(ip)){
cout<<"YES"<<endl;
}else{
cout<<"NO"<<endl;
}
}
return 0;
}
// 64 位输出请用 printf("%lld")
