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

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

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

import sys
import re

def isaddress(a):
    if re.match(r'((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d|0)\.){3}(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d|0)',a):
        return True
    else:
        return False

lines=[]
for line in sys.stdin:
    lines.append(line.split()[0])
for l in lines:
    if not isaddress(l):
        print(1)
        exit()
    
mask=list(map(int,lines[0].split(".")))
IP1=list(map(int,lines[1].split(".")))
IP2=list(map(int,lines[2].split(".")))


def toZeroOne(address)->str:
    check=""
    for a in address:
        tmp=bin(a)[2:].zfill(8)
        check+=tmp
    return check

check=toZeroOne(mask)
#print(check)
#print(check.count("01"))
if check.count("1")==0 or check.count("0")==0 or check.count("01")>0:
    print(1)
    exit()

def same(a,b,x):
    for i in range(4):
        if x[i]&a[i] != x[i]&b[i]:
            return False
    return True

if same(IP1,IP2,mask):
    print(0)
else:
    print(2)


全部评论

相关推荐

Java抽象带篮子:准备好就投,尽早投。可以看看我的置顶帖子。帖子里写了怎么改简历,怎么包装实习经历,还有2个高质量可速成的项目话术,和我的牛客八股笔记专栏
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务