题解 | #合法IP#

合法IP

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

#include <stdio.h>
#include<string.h>


int main() {
    char str[15] = {0};
    gets(str);
    int pos[3] = {0}; //存放点位置
    int n = 0; //点数量
    int d=0;
	for(int i=0;i<strlen(str);i++){
		if(46==str[i]){
			pos[n]=i;
			if(n>0){
				d=i-pos[n-1];
			}
			n++;
			if(1==d){
                break;
            }
		}
	}
	if(3!=n||0==pos[0]||strlen(str)-1==pos[2]||1==d||(str[0]=='0'&&str[1]!='.')||(str[pos[0]+1]=='0'&&str[pos[0]+2]!='.')||(str[pos[1]+1]=='0'&&str[pos[1]+2]!='.')||(str[pos[2]+1]=='0'&&str[pos[2]+2]!=0)){
		printf("NO\n");
		return 0;
	}
    int num[4] = {0};
    int x = 1;
    for (int i = pos[0] - 1; i > -1; i--) {
        num[0] += (str[i] - 48) * x;
        x = x * 10;
    }
    x = 1;
    for (int i = pos[1] - 1; i > pos[0]; i--) {
        num[1] += (str[i] - 48) * x;
        x = x * 10;
    }
    x = 1;
    for (int i = pos[2] - 1; i > pos[1]; i--) {
        num[2] += (str[i] - 48) * x;
        x = x * 10;
    }
    x = 1;
    for (int i = strlen(str) - 1; i > pos[2]; i--) {
        num[3] += (str[i] - 48) * x;
        x = x * 10;
    }

    int key = 1;
    for (int i = 0; i < 4; i++) {
        if (num[i] > 255 || num[i] < 0) {
            key = 0;
        }
    }

    if (1 == key) {
        printf("YES\n");
    } else {
        printf("NO\n");
    }


    return 0;
}

这个题缝缝补补半天,终于通过了。

全部评论

相关推荐

屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
05-19 15:21
已编辑
门头沟学院 Java
白火同学:你才沟通了200,说实话,北上广深杭这里面你连一座城市的互联网公司都没投满呢,更别说还有各种准一线二线城市了。等你沟通突破了三位数,还没结果再考虑转行的事吧。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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