题解 | #验证IP地址#

验证IP地址

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

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 验证IP地址
 * @param IP string字符串 一个IP地址字符串
 * @return string字符串
 */

bool splitip_4(char* ip) {
    int i = 0, count = 0, cnt = 0;
    while (ip[i] != '\0') {

        count++;
        if (ip[i] == '.') {
            cnt++;
        }
        //是否有0开头的
        if (count == 2 ) {
            if (ip[i - 1] == '0')
                return false;
        }

        if (count == 3) {
            if ((ip[i - 2] - '0') * 100 + (ip[i - 1] - '0') * 10 + (ip[i] - '0') > 255)
                return false;
        }
        //. 分割的位数
        if (ip[i] == '.') {

            if (count > 4)
                return false;
            count = 0;
        }
        //字符处在0-9
        if ((ip[i] < '0' || ip[i] > '9') && ip[i] != '.')
            return false;
        //
        i++;
    }
    //最后一段没有字符
    if (count == 0 && cnt == 3)
        return false;
    return true;
}
bool splitip_6(char* ip) {
    int i = 0, count = 0, cnt = 0;
    if(strstr(ip,"::"))
        return false;
    while (ip[i] != '\0') {

        count++;
        
        if (ip[i] == ':') {
            cnt++;
        }
       
        if(cnt>7)
            return false;
        //. 分割的位数
        if (ip[i] == ':') {

            if (count > 5)
                return false;
            count = 0;
        }
        //字符zai限制内
        if(ip[i] != ':'){
            if (((ip[i]  >='0' && ip[i] <= '9')||ip[i]  >='a' && ip[i] <= 'f'||ip[i]  >='A' && ip[i] <= 'F') )
                ;
            else 
                return false;
                }
        //
        i++;
    }
    //最后一段没有字符
    if (count == 0 && cnt == 7)
        return false;
    
    return true;



}
char* solve(char* IP ) {
    // write code here
    char* s = "IPv4", *p = "IPv6", *q = "Neither";

    if (strchr(IP, '.')) {
        if (splitip_4(IP))
            return s;
        return q;
    } else {
        if (splitip_6(IP))
            return p;
        return q;
    }
    return q;
}





全部评论
好麻烦
点赞 回复 分享
发布于 2024-05-07 14:13 北京

相关推荐

这算盘打的
程序员小白条:都这样的,都是潜规则,你自己说可以实习一年就行了,实习可以随便跑路的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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