题解 | #合法IP#

Redraiment的走法

http://www.nowcoder.com/practice/24e6243b9f0446b081b1d6d32f2aa3aa

#include<iostream>
using namespace std;
int main(){
    string a;
    int b[18]={0};
    int t=0;
    int count=0;
    while(getline(cin,a)){
        int maxn=a.length();
        for(int i=0;i<maxn;i++){
            if((a[i]!='.')&&((a[i]<'0')||(a[i]>'9'))){//异常字符
                cout<<"NO"<<endl;
                return 0;
            }
            if((((a[i]=='.')&&(a[i+1]=='0'))&&((a[i+2]-'0'>=0)))||((a[0]=='0')&&(a[1]!='.'))){//异常零
                cout<<"NO"<<endl;
                return 0;
            }
             if(((a[i]=='.')&&(a[i+1]=='.'))||((a[0]=='.')||(a[maxn-1]=='.'))){//'.'在首尾或者连续
                cout<<"NO"<<endl;
                return 0;
            }
            if(a[i]=='.'){
                t++;
            }
            else{
                b[t]=b[t]*10+a[i]-'0';
            }   
        }
        if(t!=3){
            cout<<"NO"<<endl;
            return 0;
        }
        for(int k=0;k<=t;k++){
            if((b[k]>=0)&&(b[k]<=255)){
                count++;
            }
        }
        if(count==4){
            cout<<"YES"<<endl;
        }
        else{
            cout<<"NO"<<endl;
        }
    }
    return 0;     
}


全部评论

相关推荐

Ncsbbss:又想干活又想要工资,怎么什么好事都让你占了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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