HJ39 题解 | #判断两个IP是否属于同一子网#
判断两个IP是否属于同一子网
https://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218
#和18题有点类似 #思路: #判断输入是否合法 #进行运算,判断是否在同一子网 #ip格式 def checkip(s): a=s.split(".") for i in range(len(a)): a[i]=int(a[i]) for i in a: if 0<=i<=255: continue else: return False return True #子网掩码格式 def checkmask(s): a=s.split(".") for i in range(len(a)):#判断范围 a[i]=int(a[i]) if not 0<=a[i]<=255: return False for i in range(len(a)): a[i]=bin(a[i])[2:]#转为二进制字符串,去掉前缀 a[i]='0'*(8-len(a[i]))+a[i]#补0 b="".join(a) if "10" in b and len(b.split("10"))==2:#检验前面全1后面全0 c=b.split("10") if c[0].count("1")==len(c[0]) and c[1].count("0")==len(c[1]): return True else: return False #运算 def op(mask,ip1,ip2): a=mask.split(".") b=ip1.split(".") c=ip2.split(".") for i in range(len(a)): a[i]=int(a[i]) b[i]=int(b[i]) c[i]=int(c[i]) if a[i]&b[i]==a[i]&c[i]: continue else: return 2 return 0 mask=input() ip1=input() ip2=input() if not checkip(ip1) or not checkip(ip2) or not checkmask(mask): print(1) else: print(op(mask,ip1,ip2))#华为##华为od##华为机试##华为od机试#
华为HJ103所有解法 文章被收录于专栏
这是我准备华为od面试的专属专栏,我会把自己的解法更新在里面,我会尽量写清楚自己的思路以及多写关键注释,希望对阅读的人有帮助~~~