判斷某個字符串是不是一個合法的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;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章