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

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

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

try
    flag = zeros(1, 7);
    while 1
        line = input('', 's');
        lines = strsplit(line, '~');
        yms = strsplit(cell2mat(lines(2)), '.');
        ipflag = 0;
        binyms = [];
        for i = 1:length(yms)
            bintemp = num2str(dec2bin(str2double(cell2mat(yms(i))), 8));
            binyms = strcat(binyms, bintemp);
        end
        if (~issorted(binyms, 'descend'))||(all(binyms=='1')||all(binyms=='0'))
            ipflag = 1;
        end
        ips = strsplit(cell2mat(lines(1)), '.');
        ipsn = zeros(1, 4);
        ipsn1 = str2double(cell2mat(ips(1)));
        ipsn(1) = ipsn1;
        if isempty(ipsn1)
            flag(6) = flag(6)+1;
            continue;
        end
        if length(ips)~=4
            flag(6) = flag(6)+1;
        elseif ipflag == 1&&~(ipsn1==0||ipsn1==127)
            flag(6) = flag(6)+1;
        elseif ipflag == 0
            for i = 2:4
                temp = str2double(cell2mat(ips(i)));
                if isempty(temp)
                    flag(6) = flag(6)+1;
                    continue
                end
                ipsn(i) = temp;
            end
            if max(ipsn)>255||min(ipsn)<0
                flag(6) = flag(6)+1;
            else
                if ipsn1>=1&&ipsn1<=126
                    flag(1) = flag(1)+1;
                elseif ipsn1>=128&&ipsn1<=191
                    flag(2) = flag(2)+1;
                elseif ipsn1>=192&&ipsn1<=223
                    flag(3) = flag(3)+1;
                elseif ipsn1>=224&&ipsn1<=239
                    flag(4) = flag(4)+1;
                elseif ipsn1>=240&&ipsn1<=255
                    flag(5) = flag(5)+1;
                end
                if ipsn1==10||(ipsn1==172&&ipsn(2)>=16&&ipsn(2)<=31)||(ipsn1==192&&ipsn(2)==168)
                    flag(7) = flag(7)+1;
                end
            end
        end
    end
catch
    fprintf('%d %d %d %d %d %d %d', flag(1), flag(2), flag(3), flag(4), flag(5), flag(6), flag(7));
end

全部评论

相关推荐

争当牛马还争不上
码农索隆:1.把简历改哈 2.猛投,狠投 3.把基础打牢 这样你在有机会的时候,才能抓住
点赞 评论 收藏
分享
程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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