题解 | #判断两个IP是否属于同一子网#
判断两个IP是否属于同一子网
https://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextLine()) {
String mask = in.nextLine();
String ip1 = in.nextLine();
String ip2 = in.nextLine();
String[] maskStr = mask.split("\\.");
String[] ip1Str = ip1.split("\\.");
String[] ip2Str = ip2.split("\\.");
int[] maskCode = new int[maskStr.length];
int[] ip1Code = new int[ip1Str.length];
int[] ip2Code = new int[ip2Str.length];
int flag = 0;
String eightBinary="";
for (int i = 0; i < 4; i++) {
if (maskStr[i].isEmpty() || ip1Str[i].isEmpty() || ip2Str[i].isEmpty()) {
flag = 1;
break;
} else {
maskCode[i] = Integer.parseInt(maskStr[i]);
ip1Code[i] = Integer.parseInt(ip1Str[i]);
ip2Code[i] = Integer.parseInt(ip2Str[i]);
if(maskCode[i]>255||ip1Code[i]>255||ip2Code[i]>255||maskCode[i]<0||ip1Code[i]<0||ip2Code[i]<0){
flag=1;
break;
}else if((maskCode[i]&ip1Code[i])!=(maskCode[i]&ip2Code[i])){
flag=2;
}
String maskBinary=Integer.toBinaryString(maskCode[i]);
while(maskBinary.length()<8){
maskBinary="0"+maskBinary;
}
eightBinary=eightBinary+maskBinary;
}
}
if(!eightBinary.matches("[1]+[0]+")){
flag=1;
}
System.out.println(flag);
}
}
}
查看18道真题和解析

