题解 | #合法IP#

合法IP

https://www.nowcoder.com/practice/995b8a548827494699dc38c3e2a54ee9

#include <iostream>
#include <string>
using namespace std;
//关于失败的情况有很多,要全部判断
void IsIpLeagal(string s){
    string tmp;
int nip,i,j;
int point=0;
if(s[0]=='.'||s[s.size()-1]=='.'){cout<<"NO"<<endl;return;}
for(i=0,j=0;i<s.size()&&j<s.size();i++){
    while(s[j]!='.'&&j<s.size()){j++;}//找到.的位置,或者最末尾的位置
    if(s[j]=='.'){point++;}
    tmp=s.substr(i,j-i);
    if(tmp==""||tmp[0]=='+'||(tmp.size()>1&&tmp[0]=='0')){
	  //截取下来的字符串是空的、是符号+、或者在不是0的情况下显示成01 都直接返回no
   {cout<<"NO"<<endl;return;}}
    else{nip=stoi(tmp);}
    if(nip<0||nip>255){cout<<"NO"<<endl;return;}//截取下来的字符串转换成数字后不在范围内,no
    i=j;
    j=i+1;
}
if(point!=3){cout<<"NO"<<endl;return;}//字符串间的分割点不是3个,no
cout<<"YES"<<endl; return;
}
int main() {
string s;
while(getline(cin,s)){
IsIpLeagal(s);}
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

最喜欢秋天的火龙果很...:第一份工作一定要往大的去,工资低点没事。后面换工作会更好找,即使你去小公司,你也不可能不会换工作的。所以找大的去
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务