题解 | #IP地址#
IP地址
http://www.nowcoder.com/practice/2359e23180194f99828f5cd9c764236a
分类讨论,如果是'.'的时候统计前一位开始的数字,最后一位时需要另外讨论
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
int i, d = 0, n = 0, j, l = 1, ok = 1;
while(cin >> s)
{
for(i = 0; ok && i <s.length(); i++)
{
if(s[i] != '.' && i != s.length()-1)
{
d++;
s[i] -= '0';
}
else
{
if(s[i] == '.')
{
for(j = i-1; j >= i - d; j--)
{
n += s[j]*l;
l *= 10;
}
if(n > 255)
{
ok = 0;
}
else
{
ok = 1;
}
n = 0;
d = 0;
l = 1;
}
else if(i == s.length()-1)
{
d++;//这里容易忽略
s[i] -= '0';
for(j = i; j >= i - d + 1; j--)
{
n += s[j]*l;
l *= 10;
}
if(n > 255)
{
ok = 0;
}
else
{
ok = 1;
}
}
}
}
if(ok == 1)
{
cout << "Yes!" << endl;
}
else
{
cout << "No!" << endl;
}
}
return 0;
}
