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

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

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

while True:
    try:
        zwym = input()
        ip1 = input()
        ip2 = input()
        def check_zwym(zwym):
            f = False
            swym_str = ''
            zwym = zwym.split('.')
            if len(zwym) == 4:
                for i in zwym:
                    swym_str += str(bin(int(i))[2:]).rjust(8, '0')
                if (swym_str.count('10')+swym_str.count('01')) < 2:
                    f = True
                    for i in zwym:
                        if not 0<=int(i)<=255:
                            f = False
            if f:
                return swym_str
            else:
                return f
        def check_ip(ip):
            f = True
            ip_str = ''
            ip = ip.split('.')
            for i in ip:
                if not 0<=int(i)<=255:
                    f = False
            for i in ip:
                ip_str += str(bin(int(i))[2:]).rjust(8, '0')
            if f:
                return ip_str
            else:
                return f
        def ip_2_ip(zwym_bin, ip1_bin, ip2_bin):
            f = False
            ip1_n_zwym = int(ip1_bin, 2) & int(zwym_bin, 2)
            ip2_n_zwym = int(ip2_bin, 2) & int(zwym_bin, 2)
            if ip1_n_zwym == ip2_n_zwym:
                f = True
            return f
        zwym_bin = check_zwym(zwym)
        if zwym_bin:
            ip1_bin = check_ip(ip1)
            ip2_bin = check_ip(ip2)
            if ip1_bin and ip2_bin:
                if ip_2_ip(zwym_bin, ip1_bin, ip2_bin):
                    print(0)
                else:
                    print(2)
            else:
                print(1)
        else:
            print(1)
    except:
        break
全部评论

相关推荐

西松屋:说明原部门有机会把
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务