题解 | 验证IP地址

验证IP地址

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

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

    bool isV4(string& s) {
        for (char c : s) {
            if (c == '.') return true;
            else if (c == ':') return false;
        }
        return false;
    }

    bool val_V4(string& s) {
        s.push_back('.');
        int num = 0;
        int val_cnt = 0;
        for (char c : s) {
            if (c == '.') {
                if (num > 255 || num < 0) return false;
                num = 0;
                val_cnt++;
            } else if (c > '9' || c < '0') return false;
            else {
                if (num == 0 && c == '0') return false;
                num = num * 10 + (c - '0');
            }
        }
        if (val_cnt != 4) return false;
        return true;
    }

    bool val_V6(string& s) {
        s.push_back(':');
        int cnt = 0;
        int val_cnt = 0;
        for (int i = 0; i < s.size(); ++i) {
            if (s[i] == ':') {
                if (cnt == 4) {
                    val_cnt++;
                    cnt = 0;
                } else if (cnt == 1) {
                    if (i > 0 && s[i-1] == '0') {
                        val_cnt++;
                        cnt = 0;
                    }
                } else return false;
                
            } else {
                if (!((s[i] <= '9' && s[i] >= '0') || (s[i] >= 'a' && s[i] <= 'f') || (s[i] >= 'A' && s[i] <= 'F'))) return false;
                else cnt++;
            }
        }
        if (val_cnt == 8) return true;
        return false;
    }

    string solve(string IP) {
        if (isV4(IP)) {
            if (val_V4(IP)) return "IPv4";
        } else {
            if (val_V6(IP)) return "IPv6";
        }
        return "Neither";
    }
};

全部评论

相关推荐

每晚夜里独自颤抖:你cet6就cet6,cet4就cet4,你写个cet证书等是什么意思。专业技能快赶上项目行数,你做的这2个项目哪里能提现你有这么多技能呢
点赞 评论 收藏
分享
哥_留个offer先:跟他说,你这个最好用c#,微软就用c#Java不适合这个项目
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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