题解 | #验证IP地址#

验证IP地址

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

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

    vector<string> Split(string IP)
    {
        vector<string> temp;
        string block = "";
        for(int i = 0;i<IP.size();i++)
        {
            if(IP[i] != '.' && IP[i] != ':')
            {
                block += IP[i];
                if(i == IP.size() - 1)
                {
                    temp.push_back(block);
                    break;
                }
            }
            else
            {
                temp.push_back(block);
                block = "";
                if(i == IP.size()-1) temp.push_back(block);//这一行写的很差,为了过测试点的
            }
        }
        return temp;
    }

    bool isIPv4(string IP)
    {
        int index = IP.find('.');
        if(index != string::npos) return true;
        else return false;
    }

    bool checkIPv4(string str)
    {
        if(str.size() > 3) return false;
        if(str == "") return false;
        for(int i = 0;i<str.size();i++)
        {
            if(str[i] < '0' || str[i] > '9') return false;
        }
        int value = atoi(str.c_str());
        if(value > 255) return false;
        char first = str[0];
        if(first == '0' && str.size() != 1) return false;
        return true;
    }

    bool checkIPv6(string str)
    {
        if (str.size() > 4 || str.size() == 0)
        {
            return false;
        }
        for (int i = 0; i < str.size(); i++)
        {
            if (!(isdigit(str[i]) || (str[i] >= 'a' && str[i] <= 'f') || (str[i] >= 'A' && str[i] <= 'F')))
            {
                return false;
            }

        }
        return true;
    }

    string solve(string IP) {
        // write code here
        vector<string> ss;
        ss = Split(IP);
        if(isIPv4(IP))
        {
            if(ss.size() != 4) return "Neither";
            for(int i = 0;i<ss.size();i++)
            {
                if(!checkIPv4(ss[i])) return "Neither";
            }
            return "IPv4";
        }
        else
        {
            if(ss.size() != 8) return "Neither";
            for(int i = 0;i<ss.size();i++)
            {
                if(!checkIPv6(ss[i])) return "Neither";
            }
            return "IPv6";
        }
    }
};

全部评论

相关推荐

牛客146600443号:92的能看上这3k,5k在搞笑呢
点赞 评论 收藏
分享
一名愚蠢的人类:多少games小鬼留下了羡慕的泪水
投递荣耀等公司10个岗位
点赞 评论 收藏
分享
11-09 14:54
已编辑
华南农业大学 产品经理
大拿老师:这个简历,连手机号码和照片都没打码,那为什么关键要素求职职位就不写呢? 从上往下看,都没看出自己到底是产品经理的简历,还是电子硬件的简历? 这是一个大问题,当然,更大的问题是实习经历的描述是不对的 不要只是去写实习流程,陈平,怎么去开会?怎么去讨论? 面试问的是你的产品功能点,是怎么设计的?也就是要写项目的亮点,有什么功能?这个功能有什么难处?怎么去解决的? 实习流程大家都一样,没什么优势,也没有提问点,没有提问,你就不得分 另外,你要明确你投的是什么职位,如果投的是产品职位,你的项目经历写的全都是跟产品无关的,那你的简历就没用 你的面试官必然是一个资深的产品经理,他不会去问那些计算机类的编程项目 所以这种四不像的简历,在校招是大忌
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务