题解 | #验证IP地址#

验证IP地址

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

class Solution {
  public:
    bool validIPv4(string& s, int be, int en) { //判断一个组是否符合IPv4
        if (en - be > 3 || en <= be) return false; //长度限制
        if (s[be] == '0' && en - be > 1) { //不能0开头
            return false;
        }
        int num = 0; //大小限制
        for (int i = be; i < en; i++) {
            if (s[i] >= '0' && s[i] <= '9') {
                num = num * 10 + s[i] - '0';
            } else return false;
        }
        return num < 256;
    }
    bool validIPv6(string& s, int be, int en) {
        if (en - be > 4 || en <= be) return false;
        if (s[be] == '0' && s[be + 1] == '0') {
            return false;
        }
        for (int i = be; i < en; i++) {
            if ((s[i] < '0' || s[i] > '9') && (s[i] < 'a' || s[i] > 'f') && (s[i] < 'A' ||
                    s[i] > 'F')) {
                return false;
            }
        }
        return true;
    }
    bool isIPv4(string& IP) { //判断是否符合IPv4
        if (IP.size() < 7 || IP.size() > 15) return false; //长度限制
        int count = 0; //组数限制
        for (int i = 0, j = 0; i <= IP.size(); j++) {
            if (IP[j] == '.' || IP[j] == '\0') {
                if (!validIPv4(IP, i, j)) return false;
                i = j + 1;
                count++;
            }
        }
        return count == 4;
    }
    bool isIPv6(string& IP) {
        if (IP.size() < 15 || IP.size() > 39) return false;
        int count = 0;
        for (int i = 0, j = 0; i <= IP.size(); j++) {
            if (IP[j] == ':' || IP[j] == '\0') {
                if (!validIPv6(IP, i, j)) return false;
                i = j + 1;
                count++;
            }
        }
        return count == 8;
    }
    string solve(string IP) {
        if (isIPv4(IP)) return "IPv4";
        else if (isIPv6(IP)) return "IPv6";
        else return "Neither";
    }
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 18:22
投了几百份简历,专业和方向完全对口,都已读不回。尝试改了一下学校,果然有奇效。
steelhead:这不是很正常嘛,BOSS好的是即便是你学院本可能都会和聊几句,牛客上学院本机会很少了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
05-28 12:15
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-03 16:22
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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