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

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

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

def check(x,y,z):
    m_bin=''
    for i in x: #检查子网掩码是否合法
        if i<0 or i>255:
            return False
        p=bin(i)[2::].zfill(8)
        m_bin+=p
    a=m_bin.find('0') #从左侧开始找'0'
    b=m_bin.rfind('1')#从右侧开始找'1'
    if a-b!=1 or b==-1:
        return False
    for j in y:  #检查IP是否合法
        if j<0 or j>255:
            return False
    for k in z:
        if k<0 or k>255:
            return False
    return True
def And(x,y): #进行AND运算
    AND=[]
    for i in range(4):
        AND.append(x[i]&y[i])
    return AND
while True:
    try:
        mask=list(map(int,input().split('.')))
        ip1=list(map(int,input().split('.')))
        ip2=list(map(int,input().split('.')))
        if check(mask,ip1,ip2):
            a=And(mask,ip1)
            b=And(mask,ip2)
            if a==b:
                print(0)
            else:
                print(2)
        else:
            print(1)
    except:
        break

全部评论

相关推荐

Volatiled:对方撤回了啥呀?
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务