题解 | #判断两个IP是否属于同一子网#

判断两个IP是否属于同一子网

https://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218

import java.util.*;

public class Main {
    static List<String> list = null;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            list = new ArrayList<>();
            String l1 = sc.next();
            String l2 = sc.next();
            String l3 = sc.next();
            String[] t1 = l1.split("\\.");
            String[] t2 = l2.split("\\.");
            String[] t3 = l3.split("\\.");
           
            if(!check(t1)|| !check(t2) || !check(t3) || list.get(0).contains("01")){
                System.out.println("1");
            }else{
                String x1 = and(list.get(0) , list.get(1));
                String x2 = and(list.get(0) , list.get(2));
                if(x1.equals(x2)){
                      System.out.println("0");
                }else{
                      System.out.println("2");
                }
            }
        }
    }
    static String and(String a,String b){
        StringBuilder res =new StringBuilder();
        for(int i =0; i < a.length(); i++){
            if(a.charAt(i) == '1' && b.charAt(i)=='1'){
                res.append(1);
            }else{
                res.append(0);
            }
        }
        return res.toString();
    }
    static boolean check(String[] t1){
        boolean flag = false;
        StringBuilder str = new StringBuilder();
        if(t1.length != 4){
           return false;
        }else{          
            for(int i = 0; i < 4;i++){
                int sum = 0;
                for(int j = 0; j < t1[i].length();j++){
                    char t = t1[i].charAt(j);
                    if(!Character.isDigit(t)){
                           return false;
                    }
                    sum = sum * 10 + (t-'0');
                }
                if(sum > 255) return false;
                if(flag) break;
                str.append(String.format("%08d",Integer.parseInt(Integer.toBinaryString(sum))));
            }                
        }

        list.add(str.toString());
        return true;
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-24 13:39
点赞 评论 收藏
分享
人力小鱼姐:实习经历没有什么含金量,咖啡店员迎宾这种就别写了,其他两段包装一下 想找人力相关的话,总结一下个人优势,结合校园经历里有相关性的部分,加一段自我评价
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-23 14:13
这是聊岔撇了吗,相同的话问了两遍
吴offer选手:上下文切换这一块
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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