题解 | #合法IP#
合法IP
https://www.nowcoder.com/practice/995b8a548827494699dc38c3e2a54ee9
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int st2i(string s){
int x=0;
for(char ch:s){
x=10*x+ch-'0';
}
return x;
}
int main() {
string s;
vector<string> table;
cin >> s;
int j=0;
for(int i=0;i<=s.size();++i){
if(s[i]=='.'||i==s.size()){
if(j<i){
table.push_back(s.substr(j,i-j));
j=i+1;
}
}
}
if(table.size()!=4){
cout << "NO";
return 0;
}
for(int i=0;i<table.size();++i){
if(table[i][0]=='0'&&table[i].size()>1){
cout << "NO";
return 0;
}
int x=st2i(table[i]);
if(!(x<=255&&x>=0)){
cout << "NO";
return 0;
}
}
cout << "YES";
}
// 64 位输出请用 printf("%lld")

查看20道真题和解析