题解 | #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;
}
全部评论

相关推荐

昨天 14:09
已编辑
北京交通大学 算法工程师
字节跳动 训练框架研发 (N+2) * (12 + 3) 硕士211
Crinton:训练框架遥遥领先
点赞 评论 收藏
分享
Cons_W:我9本的,同样找不到。感觉是岗位太少的问题,可能12月份没多少岗位的。
点赞 评论 收藏
分享
程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务