题解 | #验证IP地址#

验证IP地址

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

首先将字符串IP中的每一段子串保存在数组vec中,然后判断格式正确与否,分为段数的判断、0的判断、值的判断。

class Solution {
public:
    /**
     * 验证IP地址
     * @param IP string字符串 一个IP地址字符串
     * @return string字符串
     */
    bool is_ipv4(string ip){
        for(auto& c: ip) if(c=='.') c=' ';
        vector<string> vec{};
        string str{};
        stringstream s_stream{ip};
        while(s_stream>>str) vec.push_back(str);
        if(vec.size()!=4) return false;
        for(auto x: vec){
            if(x[0]=='0' && x.size()>1) return false;
            if(stoi(x)>255) return false;
            for(auto c: x) if(!isdigit(c)) return false;
        }
        return true;
    }
    
    bool is_ipv6(string ip){
        for(auto& c: ip) if(c==':') c=' ';
        vector<string> vec{};
        string str{};
        stringstream s_stream{ip};
        while(s_stream>>str) vec.push_back(str);
        if(vec.size()!=8) return false;
        for(auto x: vec){
            char* endptr=nullptr;
            if(strtol(x.data(),&endptr,16)==0 && x.size()>1) return false;
            if(strtol(x.data(),&endptr,16)>0xffff) return false;
        }
        return true;
    }
    
    string solve(string IP) {
        if(is_ipv4(IP)) return "IPv4";
        else if(is_ipv6(IP)) return "IPv6";
        else return "Neither";
    }
};




全部评论

相关推荐

伟大的烤冷面被普调:暨大✌🏻就是强
点赞 评论 收藏
分享
11-08 13:58
门头沟学院 Java
程序员小白条:竟然是蓝桥杯人才doge,还要花钱申领的offer,这么好的公司哪里去找
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务