题解 | #判断两个IP是否属于同一子网#
判断两个IP是否属于同一子网
https://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218
import sys import re #笑死了,我被前面一道检测子网是否有效的题搞到ptsd了,中间一段comment掉的是检测每段是否全1or0的 zi = input().split(".") ip1 = input().split(".") ip2 = input().split(".") def ifzi(zi): to_bin = "" for i in zi: temp = int(i) if 0<=temp<=255: temp = str(bin(temp))[2:].rjust(8,'0') to_bin += temp else: return False, to_bin #check if all 1 and all 0 # if not (re.search(r'^[1]*$',temp) or re.search(r'^[0]*$',temp)): # return False, to_bin #check if 0s after 1s if to_bin.rfind('1') == to_bin.index('0')-1: return True, to_bin else: return False, to_bin def if_ip(ip): to_bin="" for i in ip: temp = int(i) if 0<=temp<=255: temp = str(bin(temp))[2:].rjust(8,'0') to_bin +=temp else: return False, to_bin return True, to_bin if_zi, zi_bin = ifzi(zi) if_ip1, ip1_bin = if_ip(ip1) if_ip2, ip2_bin = if_ip(ip2) if if_zi and if_ip1 and if_ip2: add_ip1 = bin(int(zi_bin, 2) & int(ip1_bin, 2)) add_ip2 = bin(int(zi_bin, 2) & int(ip2_bin, 2)) if add_ip1 == add_ip2: print(0) else: print(2) else: print(1)