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

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

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

```def checkip(lst):
    for i in lst:
        if int(i) < 0 or int(i) > 255:
            return False
    return True
def checkmask(lst):
    i = changebin(lst)
    if i[0] != '11111111' or i[-1] != '00000000':
        return False
    else:
        return checkip(lst)
def changebin(lst):
    res = []
    for i in lst:
        res.append(bin(int(i))[2:].rjust(8, '0'))
    return res
def checksame(ip1_bin, ip2_bin, mask_bin):
    count = 0
    for i in range(4):
        a = int(ip1_bin[i], 2) & int(mask_bin[i], 2)
        b = int(ip2_bin[i], 2) & int(mask_bin[i], 2)
        if a == b:
            count += 1
    if count == 4:
        return True
    else:
        return False
    
while True:
    try:
        mask = input().split('.')
        ip1 = input().split('.')
        ip2 = input().split('.')
        ip1_bin = []
        ip2_bin = []
        mask_bin = []
        if checkmask(mask) and checkip(ip1) and checkip(ip2):
            ip1_bin = changebin(ip1)
            ip2_bin = changebin(ip2)
            mask_bin = changebin(mask)
            if checksame(ip1_bin, ip2_bin, mask_bin):
                print('0')
            else:
                print('2')
        else:
             print('1')
    except:
        break
全部评论

相关推荐

11-09 14:54
已编辑
华南农业大学 产品经理
大拿老师:这个简历,连手机号码和照片都没打码,那为什么关键要素求职职位就不写呢? 从上往下看,都没看出自己到底是产品经理的简历,还是电子硬件的简历? 这是一个大问题,当然,更大的问题是实习经历的描述是不对的 不要只是去写实习流程,陈平,怎么去开会?怎么去讨论? 面试问的是你的产品功能点,是怎么设计的?也就是要写项目的亮点,有什么功能?这个功能有什么难处?怎么去解决的? 实习流程大家都一样,没什么优势,也没有提问点,没有提问,你就不得分 另外,你要明确你投的是什么职位,如果投的是产品职位,你的项目经历写的全都是跟产品无关的,那你的简历就没用 你的面试官必然是一个资深的产品经理,他不会去问那些计算机类的编程项目 所以这种四不像的简历,在校招是大忌
点赞 评论 收藏
分享
狠赚笔第一人:学计算机自己不努力怪大环境?我大一就拿到了美团大厂的offer,好好看看自己有没有努力查看图片
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务