題目描述:
寫一個算法判斷某個字符串是不是一個合法的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;
}
};