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

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

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

def check_ip(s):

    l = s.split('.')

    if len(l) != 4:

        return False

    for i in l:

        if int(i)<0 or int(i)>255:

            return False

    return True

def check_mask(s):

    if not check_ip(s):

        return False

    l = s.split('.')

    b = ''

    for i in l:

        b += bin(int(i))[2:].zfill(8)

    if b.find('0') - b.rfind('1') != 1:

        return False

    return True

def check_same(mask,ip1,ip2):

    m = mask.split('.')

    mb = ''

    for i in m:

        mb += bin(int(i))[2:].zfill(8)

    i1 = ip1.split('.')

    ip1b = ''

    for i in i1:

        ip1b += bin(int(i))[2:].zfill(8)

    a1 = int(mb,2) & int(ip1b,2)

    i2 = ip2.split('.')

    ip2b = ''

    for i in i2:

        ip2b += bin(int(i))[2:].zfill(8)

    a2 = int(mb,2) & int(ip2b,2)

    if a1 != a2:

        return False

    return True

while 1:

    try:

        mask = input()

        ip1 = input()

        ip2 = input()

        if check_mask(mask) and check_ip(ip1) and check_ip(ip2):

            if check_same(mask,ip1,ip2):

                print(0)

            else:

                print(2)

        else:

            print(1)

            

    except:

        break

全部评论

相关推荐

不愿透露姓名的神秘牛友
03-31 21:17
小米 后端 24k*15 硕士985
点赞 评论 收藏
分享
Elastic90:公司不要求加班,但 又不允许你准点下班,经典又当又立
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务