import java.util.Scanner;

public class Main{
	public static void main(String[] args)  {
		Scanner input = new Scanner(System.in);
		while(input.hasNext()){
			String[] str1 = input.nextLine().split("\\.");//切割成字符串数组
			String[] str2 = input.nextLine().split("\\.");
			String[] str3 = input.nextLine().split("\\.");
			String[] str4 = input.nextLine().split("\\.");
			
			long ip1 = toLong(str1);
			long ip2 = toLong(str2);
			long ipp1 = Math.min(ip1, ip2);//保证起始ip < 终止ip
			long ipp2 = Math.max(ip1, ip2);
			long ip3 = toLong(str3);
			long ip4 = toLong(str4);
			long ipp3 = Math.min(ip3, ip4);
			long ipp4 = Math.max(ip3, ip4);
			if(ipp2<ipp3||ipp1>ipp4)//
				System.out.println("NO Overlap IP");
			else
				System.out.println("Overlap IP");
		}
		input.close();
	}
    //将ip地址转为long型
	private static long toLong(String[] str) {
		long result = 0;
		for(int i=0;i<4;i++){
			result += Math.pow(16, i)*Integer.valueOf(str[i-3]);
		}
		return result;
	}
}    
求助各位大神,这是我当时的代码,但是最后只能通过87.5%,想了一晚上还是没想明白,恳请赐教!