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

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

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

import java.util.Scanner;
//巧妙判断是否前面都是1 后面都是0的方法:最后一个1是否在第一个0前面
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while(in.hasNext()){
        // 注意 hasNext 和 hasNextLine 的区别
    String []line1=in.nextLine().split("\\.");
    String []ip1=in.nextLine().split("\\.");
    String[] ip2=in.nextLine().split("\\.");
int[]num1=new int[4];
int[]num2=new int[4];
boolean flag=false;
boolean illgea=false;
for(int i=0;i<4;i++)
{
    int te1=(Integer.parseInt(ip1[i])&Integer.parseInt(line1[i]));
    int te22=(Integer.parseInt(ip2[i])&Integer.parseInt(line1[i]));
if(Integer.parseInt(ip1[i])<0||Integer.parseInt(ip1[i])>255||Integer.parseInt(ip2[i])<0||Integer.parseInt(ip2[i])>255|| Integer.parseInt(line1[i])<0||Integer.parseInt(line1[i])>255)
{
    illgea=true;
    break;
}

    if(te1!=te22) {flag=true;
 }
}


if(illgea)System.out.println(1);
else if(!judge(line1)) System.out.println(1);
else{
if(flag)
System.out.println(2);
else System.out.println(0);
}

        }
    }

      public static boolean judge(String[]line)
    {
        String binary="";
        for (int i = 0; i < 4; i++) {
            binary+=String.format("%08d",Integer.parseInt(Integer.toBinaryString(Integer.parseInt(line[i]))));
            
        }
        return binary.lastIndexOf("1")<binary.indexOf("0");
        
    }
}

全部评论

相关推荐

点赞 评论 收藏
转发
1 收藏 评论
分享
牛客网
牛客企业服务