题解 | #合法IP#

合法IP

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

//1.没有其他字符 2.有且仅有仨点,且不相连,且不出现在两头 3.两位及以上数字不以0开头
#include <math.h>
#include <stdio.h>
#include <string.h>

int main() {

    char ip[20] = {0};
    scanf("%s", ip);
    int flag = 0;
    int l = 0,x = -1;
    int len = strlen(ip);
    for (int i = 0; i < len; i++) {
        if (ip[i] == '.' || (ip[i] >= '0' && ip[i] <= '9') ) {
            if (ip[i] == '.') {
                l++;
            }
            if (ip[0] == '0' && ip[1] != '.') {
                x = 0;
                flag = 1;
                break;
            }
            if (ip[i] == '.' && ip[i + 1] == '0' && ip[i + 2] >= '0' && ip[i + 2] <= '9') {
                x = 0;
                flag = 1;
                break;
            }
        } else {
            x = 0;
            flag = 1;
            break;
        }
    }

    if (flag == 0 && l == 3) {
        int a, b, c, d;
        a = b = c = d = -1;
        sscanf(ip, "%d.%d.%d.%d", &a, &b, &c, &d);
        //printf("%d\n", a);
        //printf("%d\n", b);
        //printf("%d\n", c);
        //printf("%d\n", d);
        if (a != EOF && b != EOF && c != EOF && d != EOF) {
            int m = pow(2, 8);
            if (a < m && b < m && c < m && d < m) {
                x = 1;
            } else {
                x = 0;
            }
        } else {
            x = 0;
        }
    }else {
            x = 0;
        }

        //printf("%d",x);

        if (x == 0) {
            printf("NO");
        }else   {
            printf("YES");
        }


    return 0;
}

全部评论

相关推荐

04-21 11:22
已编辑
中华女子学院 UE4
耐心学习_佩可officical:直接举报他,佬,违反劳动法我记得boss会下架
点赞 评论 收藏
分享
04-29 18:07
常州大学 Java
寂静羽翼:兄弟我已经亲身经历了,双非没实习很多大厂还是会给笔试的,可是有的公司笔试做的好也不给面一直卡着,ssob基本看我没实习都拒绝我了,但是每天投满偶尔也能有一两场初创公司的面试,但是薪资基本在五六千
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务