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

题目描述:

写一个算法判断某个字符串是不是一个合法的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;
    }
};

猜你喜欢

转载自blog.csdn.net/kongkongkkk/article/details/77751013