题解 | #判断两个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)

全部评论

相关推荐

自由水:这HR已经很好了,多的是已读不回和不读了
点赞 评论 收藏
分享
头像
05-16 11:16
已编辑
东华理工大学 Java
牛客737698141号:盲猜几十人小公司,庙小妖风大,咋不叫她去4️⃣呢😁
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务