题解 | #识别有效的IP地址和掩码并进行分类统计#

识别有效的IP地址和掩码并进行分类统计

http://www.nowcoder.com/practice/de538edd6f7e4bc3a5689723a7435682

#include<iostream>
#include<vector>
using namespace std;
vector<int> e(string a)
{
    vector<int>d;
    int c=0;
    for(int i=0;i<a.length();i++)
    {
        
        if(a[i]=='.'&&i!=0)
        {
            int b=0;
            for(int j=0;j<i;j++)
            {
                b=b*10+a[j]-'0';
            }
            d.push_back(b);
        a=a.substr(i+1,a.length());
            c++;
            i=-1;
        }
        else if(a[i]=='.'&&i==0)
        {
              d.push_back(-1);;
             a=a.substr(i+1,a.length());
            c++;
             i=-1;
        }
    }
    if(a.length()>=1)
    {
        int b=0;
          for(int j=0;j<a.length();j++)
            {
                b=b*10+a[j]-'0';
            }
        d.push_back(b);
    }
    else 
    {
         d.push_back(-1);
    }
    return(d);
}
int main()
{
    string a;
    int d[7]={0};
    while(cin>>a)
    {
        string b,c;
        for(int i=0;i<a.length();i++)
        {
            if(a[i]=='~')
            {
                b=a.substr(0,i);
                c=a.substr(i+1,a.length());
                break;
            }
        }
       vector<int>f,g;
        f=e(b);
        g=e(c);
    if(f[0]==0||f[0]==127)
                {
                   continue;
                }
        vector<int>h;
        for(int i=0;i<4;i++)
        {
            vector<int>w;
            if(g[i]!=0)
            {
           while(g[i])
           {
               w.push_back(g[i]%2);
               g[i]=g[i]/2;
           }
                if(w.size()<8)
                {
                    d[5]++;
                    goto x;
                }
            while(w.size()){
            h.push_back(w.back());
                w.pop_back();
            }
        }
            else if(g[i]==0)
            {
                h.push_back(0);
            }
            }
        for(int i=0;i<h.size();i++)
        {
            if(h[i]==0)
            {
                for(int j=i+1;j<h.size();j++)
                {
                    if(h[j]==1)
                    {
                        d[5]++;
                        goto x;
                    }
                }
            }
            else if(h[i]==0&&i==0)
            {
                d[5]++;
                        goto x; 
            }
            else if(h[i]==1&&i==h.size()-1)
            {
                 d[5]++;
                        goto x;
            }
        }
        if(f[2]>=0&&f[2]<=255&&f[3]>=0&&f[3]<=255)
        {
            if(f[1]>=0&&f[1]<=255)
            {
                if(f[0]>=1&&f[0]<=126)
                {
                    if(f[0]==10)
                    {
                        d[6]++;
                    }
                    d[0]++;
                }
                else if(f[0]>=128&&f[0]<=191)
                {
                    if(f[0]==172&&f[1]>=16&&f[1]<=31)
                    {
                        d[6]++;
                    }
                    d[1]++;
                }
                 else if(f[0]>=192&&f[0]<=223)
                {
                     if(f[0]==192&&f[1]==168)
                     {
                         d[6]++;
                     }
                    d[2]++;
                }
                 else if(f[0]>=224&&f[0]<=239)
                {
                    d[3]++;
                }
                else if(f[0]>=240&&f[0]<=255)
                {
                    d[4]++;
                }
                else
                {
                    d[5]++;
                }
            }
            else
                {
                    d[5]++;
                } 
        }
         else
                {
                    d[5]++;
                } 
        x:
        continue;
    }
    for(int i=0;i<7;i++)
    {
        cout<<d[i]<<' ';
    }
    return(0);
}
全部评论

相关推荐

10-24 13:36
门头沟学院 Java
Zzzzoooo:更新:今天下午有hr联系我去不去客户端,拒了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
正在热议
# 25届秋招总结 #
440577次浏览 4493人参与
# 春招别灰心,我们一人来一句鼓励 #
41484次浏览 524人参与
# 北方华创开奖 #
107311次浏览 599人参与
# 地方国企笔面经互助 #
7928次浏览 18人参与
# 同bg的你秋招战况如何? #
75577次浏览 552人参与
# 虾皮求职进展汇总 #
114215次浏览 884人参与
# 阿里云管培生offer #
119865次浏览 2219人参与
# 实习,投递多份简历没人回复怎么办 #
2454001次浏览 34848人参与
# 实习必须要去大厂吗? #
55678次浏览 960人参与
# 提前批简历挂麻了怎么办 #
149825次浏览 1977人参与
# 投递实习岗位前的准备 #
1195707次浏览 18546人参与
# 你投递的公司有几家约面了? #
33180次浏览 188人参与
# 双非本科求职如何逆袭 #
661910次浏览 7394人参与
# 如果公司给你放一天假,你会怎么度过? #
4730次浏览 55人参与
# 机械人春招想让哪家公司来捞你? #
157604次浏览 2267人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11365次浏览 270人参与
# 发工资后,你做的第一件事是什么 #
12418次浏览 61人参与
# 工作中,努力重要还是选择重要? #
35612次浏览 384人参与
# 参加完秋招的机械人,还参加春招吗? #
20091次浏览 240人参与
# 我的上岸简历长这样 #
451924次浏览 8088人参与
# 实习想申请秋招offer,能不能argue薪资 #
39235次浏览 314人参与
# 非技术岗是怎么找实习的 #
155850次浏览 2120人参与
牛客网
牛客企业服务