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

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

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

# sub_net = list(map(int, input().split(".")))
# ip1 = list(map(int, input().split(".")))
# ip2 = list(map(int, input().split(".")))

# while True:
#     b_flag = False
#     sn_flag = 1
#     break_flag = False
#     sn_bin = ''
#     ip1_bin = ''
#     ip2_bin = ''
#     for i in range(len(sub_net)):
#         if sub_net[i]<0 or sub_net[i]>255 or ip1[i]<0 or ip1[i]>255 or ip2[i]<0 or ip2[i]>255:
#             print(1)
#             b_flag = True
#             break            
#         else:
#             sn_bin += bin(sub_net[i])[2:].rjust(8, "0")
#             ip1_bin += bin(ip1[i])[2:].rjust(8, "0")
#             ip2_bin += bin(ip2[i])[2:].rjust(8, "0")
try:
    mask = input().split('.')
    ip1 = input().split('.')
    ip2 = input().split('.')

    def check_mask(mask):
        L = ''
        for mask_slice in mask:
            if int(mask_slice) < 0 or int(mask_slice) > 255:
                return False
            else:
                L = L + bin(int(mask_slice))[2:].rjust(8, '0')
        # print(L)
        if (not '1' in L) or (not '0' in L):
            return False
        elif L.rfind('1') != (L.find('0') - 1):
            return False
        else:
            return True

    def check_ip(ip):
        for ip_slice in ip:
            if int(ip_slice) < 0 or int(ip_slice) > 255:
                return False
        return True

    def ip2bin(ip):
        L = ''
        for ip_slice in ip:
            L = L + bin(int(ip_slice))[2:].rjust(8, '0')
        return L

    if check_mask(mask):
        if check_ip(ip1) and check_ip(ip2):
            ip1_bin = ip2bin(ip1)
            ip2_bin = ip2bin(ip2)
            mask_bin = ip2bin(mask)
            flag = True
            for i in range(32):
                if (int(ip1_bin[i]) and int(mask_bin[i])) != (int(ip2_bin[i]) and int(mask_bin[i])):
                    flag = False
                    break
            if flag:
                print(0)
            else:
                print(2)
        else:
            print(1)
    else:
        # print('mask error')
        print(1)
except:
    pass

全部评论

相关推荐

点赞 评论 收藏
分享
Lorn的意义:你这种岗位在中国现在要么牛马天天加班,要么关系户进去好吃好喝,8年时间,真的天翻地覆了,对于资本来说你就说一头体力更好的牛马,哎,退伍没有包分配你真的亏了。
点赞 评论 收藏
分享
给我发了笔试链接,想着等晚上回去做,结果还没做流程就终止了
伟大的小黄鸭在学习:我猜就是笔试几乎没用,就是用来给用人部门拖时间复筛简历的,可能用人部门筛到你简历觉得不合适就提前挂了
投递小鹏汽车等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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