欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

判断某个字符串是不是一个合法的IP地址

程序员文章站 2024-03-12 22:20:38
...

题目描述:

写一个算法判断某个字符串是不是一个合法的IP地址。

实现如下:

class Solution
{
public:
    //ip字符串输入默认采用IPV4的点分十进制法,合法地址为0.0.0.0-255.255.255.255
    bool isLegalIP(const string& ip)
    {
        int validSegSize = 0; //记录一共有多少个分段

        int oneSeg = 0; //记录每个分段的数值
        int segLen = 0; //记录是否分段有数值
        for (int i = 0; i < ip.length(); ++i)
        {
            //计算每个分段的数值
            if (ip[i] >= '0' && ip[i] <= '9')
            {
                oneSeg = oneSeg * 10 + (ip[i] - '0');
                //如果分段有数值,就置segLen为1
                ++segLen;
            }
            else if (ip[i] == '.') //如果此字符为'.',那么就判断之前的那个分段的值是否合法且是否存在值
            {
                if (oneSeg <= 255 && segLen > 0)
                    validSegSize++;
                else
                    return false;

                oneSeg = 0; //重置分段值
                segLen = 0; //重置分段是否存在值
            }
            else //如果出现0-9或'.'以外的字符都判断为非法
                return false;
        }

        //判断最后一个分段的合法性
        if (oneSeg <= 255 && segLen > 0)
            validSegSize++;

        //判断是否一共有四个分段
        if (validSegSize == 4)
            return true;
        else
            return false;
    }
};
相关标签: 算法 ipv4