题解 | #判断两个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; } }