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

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

https://www.nowcoder.com/practice/34a597ee15eb4fa2b956f4c595f03218?tpId=37&tqId=21262&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D37&difficulty=undefined&judgeStatus=undefined&tags=&title=39

netmask = input()
ip1 = input()
ip2 = input()

def valid(netmask, ip1, ip2):
    # 判断子网掩码是否合法
    ss = ""
    int_mask = 0
    for s in netmask.split("."):
        if len(s) == 0 or int(s) > 255 or int(s) < 0:
            return 1
        int_mask = int_mask * 256 + int(s)
        ss = ss + "{:08b}".format(int(s))
    if ss.find('0') - ss.rfind('1') != 1:
        return 1
    
    # 判断ip1和ip2是否合法
    int_ip1, int_ip2 = 0, 0
    for s in ip1.split("."):
        if len(s) == 0 or int(s) > 255 or int(s) < 0:
            return 1
        int_ip1 = int_ip1 * 256 + int(s)

    for s in ip2.split("."):
        if len(s) == 0 or int(s) > 255 or int(s) < 0:
            return 1
        int_ip2 = int_ip2 * 256 + int(s)
    
    if int_ip1 & int_mask == int_ip2 & int_mask:
        return 0
    else:
        return 2

print(valid(netmask, ip1, ip2))

全部评论

相关推荐

白火同学:能。我当初应届沟通了1200,收简历50,面试10左右吧,加油投吧
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务