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

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

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

大佬函数名掉了,补上

def int2bin(ipt):
    lst = list(map(int, ipt.split('.')))
    res = ''
    for i in lst:
        a = bin(i)[2:]
        b = '0' * (8 - len(a)) + str(a)
        res += b
    return res


def check_ip(ip):
    ip_lst = list(map(int, ip.split('.')))
    if len(ip_lst) != 4 or '' in ip_lst:
        return False
    for i in ip_lst:
        if not 0 <= i <= 255:
            return False
    return True


def check_mask(mask):
    if not check_ip(mask):
        return False
    res = int2bin(mask)
    if res.find('0') == res.rfind('1') + 1:
        return True
    return False


def check_subnet(ip, mask):
    ip_lst = list(map(int, ip.split('.')))
    mask_lst = list(map(int, mask.split('.')))
    subnet = []
    for i in range(4):
        subnet.append(ip_lst[i] & mask_lst[i])
    return subnet


while True:
    try:
        mask1 = input()
        ip1 = input()
        ip2 = input()
        if check_mask(mask1) and check_ip(ip1) and check_ip(ip2):
            if check_subnet(ip1, mask1) == check_subnet(ip2, mask1):
                print('0')
            else:
                print('2')
        else:
            print('1')
    except:
        break


全部评论

相关推荐

屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 11:15
点赞 评论 收藏
分享
评论
4
1
分享

创作者周榜

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