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

牛客 HJ18 识别有效的IP地址和掩码并进行分类统计_第1张图片

import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int[] cunt = new int[7];
        while(sc.hasNextLine()){
            String s = sc.nextLine();
            String[] s2 = s.split("~");
            if(s2[0].equals("end")){
                break;
            }
            String[] s0 = s2[0].split("\\.");
            String[] s1 = s2[1].split("\\.");
            if(Integer.parseInt(s0[0]) == 0|| Integer.parseInt(s0[0]) == 127){
                continue;
            }
            int jud = 1, isone = 1;
            for(int i = 0;i < 4; i++){
                if(s1.length < 4 || s1[i].length() == 0 || jud == 0) {
                    jud = 0;
                    break;
                }
                int t = Integer.parseInt(s1[i]);
                for(int j = 7; j >= 0; j--){
                    int m = 1 << j;
                    m &= t;
                    if(m == 0){
                        isone = 0;
                    }
                    else if(isone == 0){
                        jud = 0;
                        break;
                    }
                }
            }
            if(jud == 0 || isone == 1){
                cunt[5]++;
                continue;
            }
            jud = 1;
            for(int i = 0;i < 4; i++){
                if(s0.length < 4 || s0[i].length() == 0 || jud == 0) {
                    jud = 0;
                    break;
                }
                int t = Integer.parseInt(s0[i]);
                if(t < 0 || t > 255){
                    jud = 0;
                    break;
                }
            }
            int t = Integer.parseInt(s0[0]);
            if(jud == 0){
                cunt[5]++;
                continue;
            }
            if(t >= 1 && t <= 126){
                cunt[0]++;
            }
            if(t >= 128 && t <= 191){
                cunt[1]++;
            }
            if(t >= 192 && t <= 223){
                cunt[2]++;
            }
            if(t >= 224 && t <= 239){
                cunt[3]++;
            }
            if(t >= 240 && t <= 255){
                cunt[4]++;
            }
            if(t == 10){
                cunt[6]++;
            }
            if(t == 172 && Integer.parseInt(s0[1]) >= 16 &&Integer.parseInt(s0[1])<=31){
                cunt[6]++;
            }
            if(t == 192 && Integer.parseInt(s0[1]) == 168){
                cunt[6]++;
            }
        }
        for(int i:cunt)
            System.out.print(i + " ");
    }
}

你可能感兴趣的:(牛客)