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

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

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

zwym = input().split('.')
ip1 = input().split('.')
ip2 = input().split('.')
def is_valid(ls):
    for i in ls:
        if int(i)<0 or int(i)>255:
            return False
    return True

def is_zwym_valid(s):
    num = 1
    for i in s:
        if int(i) == num:
            continue
        if int(i) == 0 and num == 1:
            num = 0
        if int(i) == 1 and num == 0:
            return False
    return True

def dec_2_bin(ls):
    s = ''
    for i in ls:
        bin_str = bin(int(i))[2:].rjust(8,'0')
        s += bin_str
    return s
            
if is_valid(zwym) and is_valid(ip1) and is_valid(ip2) and is_zwym_valid(dec_2_bin(zwym)):
    ip1_bin_str = dec_2_bin(ip1)
    ip2_bin_str = dec_2_bin(ip2)
    zwym_bin_str = dec_2_bin(zwym)
    i = 0
    while zwym_bin_str[i] == '1':
        if ip1_bin_str[i] != ip2_bin_str[i]:
            print(2)
            break
        i += 1
        if zwym_bin_str[i] == '0':
            print(0)
        
    
else:
    print(1)
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务