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

def chang(ip):
    ret = ''
    for s in ip:
        n = int(s)
        if 0 <= n <= 255:
            ret = ret + bin(n)[2:].rjust(8,'0')
        else:
            return False,''
    # print(ret)
    return True,ret

def check(mask):
    head = -1
    tail = len(mask)
    for i in range(len(mask)):
        if mask[i] == '1':
            head = i
        else:
            break
    for i in range(len(mask)-1,-1,-1):
        if mask[i] == '0':
            tail = i  
        else:
            break
    return tail - head == 1
# staut,mask = chang(mask)
# print(mask)
# print(check(mask))
while True:
    try:
        mask = input().split('.')
        ip1 = input().split('.')
        ip2 = input().split('.')

        mask_statu,mask = chang(mask)
        ip1_statu,ip1 = chang(ip1)
        ip2_statu,ip2 = chang(ip2)

        if mask_statu and ip1_statu and ip2_statu and check(mask):
            llen = len(mask.replace('0',''))
            if ip1[:llen] == ip2[:llen]:
                print(0)
            else:
                print(2)
        else:
            print(1)
    except:
        break

全部评论

相关推荐

一tiao酸菜鱼:秋招还没正式开始呢,就准备有结果了。。。。?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务