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

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

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

while True:
    try:
        m=input().split('.')
        ip_1=input().split('.')
        ip_2=input().split('.')
        error=0
        dif=0
        num1=''
        num2=''
        num3=''
        for i in range(4):
            if int(ip_1[i]) in range(256) and int(ip_2[i]) in range(256) and int(m[i]) in range(256): #初步筛选超出0~255范围的,并转换为二进制
                k=bin(int(m[i],10))[2:].zfill(8)
                num1+=str(k)
                k=bin(int(ip_1[i],10))[2:].zfill(8)
                num2+=str(k)
                k=bin(int(ip_2[i],10))[2:].zfill(8)
                num3+=str(k)
            else:
                error+=1
                break
        a= num1.find("0")
        b= num1.rfind("1")
        if b+1 != a:#找到0开始的地方和1结束的地方,如果位置相差1说明连续
            error+=1   
        if not error:
            for j in range(16):
                if num1[j]:
                    if num2[j]==num3[j]:
                        continue
                    else:
                        dif+=1
                        break
                else:
                    continue
            if dif:
                print(2)
            else:
                print(0)
        else:
            print(1)
    except:
        break
        
全部评论

相关推荐

头像
04-26 15:00
已编辑
算法工程师
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务