题解 | #验证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";

}

全部评论

相关推荐

白火同学:先说结论,对于一份实习简历来说,整体还是挺不错的,技术深度和广度都到位,找到一份中小厂的实习没啥问题。 再说说能优化的点吧。 1、量化结果,项目中很多工作量化一下结果给面试官的感受会更直观一些,也能体现你对应用该项技术的理解(在众多技术为什么要用它,运行性能或者说开发效率往往是一大考虑指标;而不是说大家做这种功能都用它,所以我用它)。 2、突出亮点,项目中可以从“工作职责”择一些“个人亮点”另写一块,优先去写开发过程中遇到的xx问题,使用xx技术达到xx效果,针对性去写一些疑杂难的功能,能带出你个人思考和解决的过程。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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