题解 | #合法IP#
合法IP
https://www.nowcoder.com/practice/995b8a548827494699dc38c3e2a54ee9
#include <iostream> #include <sstream> #include <string> using namespace std; int main() { string s; cin>>s; if(s[0] == '.'){ cout << "NO"<<endl; return 0; } int count =0; int cur_s = 0; for (int i=0; i<s.size(); i++) { if (s[i] == '.' && s[i+1] !='.') { string t = s.substr(cur_s,i-cur_s); count = count + 1; cur_s = i+1; if(t.size() == 0 || stoi(t)> 255) { cout << "NO"<<endl; return 0; } if(t.size()>1 && t[0]=='0'){ cout << "NO"<<endl; return 0; } } else if (s[i]>='0' && s[i]<='9') { continue; } else { cout <<"NO"<<endl; return 0; } } string t = s.substr(cur_s, s.size()- cur_s); if(t.size() == 0 || stoi(t)> 255){ cout << "NO"<<endl; return 0; }else if(t.size()>1 && t[0] == '0'){ cout << "NO"<<endl; return 0; }else { count = count + 1; } if(count == 4){ cout << "YES" <<endl; return 0; }else { cout <<"NO"<<endl; return 0; } } // 64 位输出请用 printf("%lld")