题解 | #验证IP地址#

验证IP地址

https://www.nowcoder.com/practice/55fb3c68d08d46119f76ae2df7566880

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 验证IP地址
 * @param IP string字符串 一个IP地址字符串
 * @return string字符串
 */
#include <string.h>
int  ipv4(char* IP) {
    char* p = IP;
    int num = 0;
    int d = 0;
    do {
        if (*p == '.' || *p == '\0') {
            if (num > 255) return -1;
            d++;
            num = 0;
            if (*p == '\0') break ;
            p++;
        }
        if (*p >= '0' && *p < '9') {
            if (num == 0 && *p == '0' && *(p + 1) != '.') {
                return -1;
            }
            num = (*p - '0') + num * 10;
        } else {
            return -1;
        }
    } while (*p++ != '\0');
    if (d != 4) return -1;
    return 0;
}

int  ipv6(char* IP) {
    char* p = IP;
    int num = 0;
    int d = 1;
    do {
        if (*p == ':' || *p == '\0') {
            if(num==0||num>4){
                return -1;
            }
            d++;
            num=0;
            if(*p=='\0'){
                break;
            }
            p++;
        }
        if ((*p >= '0' && *p <= '9' )||( *p >= 'a' && *p <= 'f' )|| (*p >= 'A' &&
                *p <= 'F')) {
            p++;
            num++;
        } else {
            return -1;
        }
    } while (*p != '\0');
    if (d != 8) {
        return -1;
    }
    return 0;

}

char* solve(char* IP ) {
    // write code here
    char* p = IP;
    int flag = 0;
    while (*p != '\0') {
        if (*p == '.') {
            flag = 1;
            break;
        }
        if (*p == ':') {
            flag = -1;
            break ;
        }
        p++;
    }
    if (flag == 1) {
        if (ipv4(IP) == 0) {
            return "IPv4";
        }
    }
    if (flag == -1) {
        if (ipv6(IP) == 0) {
            return "IPv6";
        }
    }

    return "Neither";

}

全部评论

相关推荐

不愿透露姓名的神秘牛友
10-12 10:48
已编辑
秋招之苟:邻居家老哥19届双2硕大厂开发offer拿遍了,前几天向他请教秋招,他给我看他当年的简历,0实习实验室项目技术栈跟开发基本不沾边😂,我跟他说这个放在现在中厂简历都过不了
点赞 评论 收藏
分享
Yushuu:你的确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了😆
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务