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

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

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

mask = input().split('.')
ip_1 = input().split('.')
ip_2 = input().split('.')
def Judgment_mask(mask):
    result = ''
    for i in range(len(mask)):
        if int(mask[i]) < 0 or int(mask[i]) > 255:
            return 1
        result += f'{int(mask[i]):08b}'
    if '01' in result or '1' not in result or '0' not in result:
        return 1
    return 0
def Judgment_ip(ip):
    if len(ip) != 4:
        return 1
    if '' in ip:
        return 1
    for num_ip in ip:
        if int(num_ip) < 0 or int(num_ip) > 255:
            return 1
    return 0
def mask_ip(mask,ip_1,ip_2):
    result_1 = ''
    result_2 = ''
    for i in range(len(mask)):
        mask[i] = f'{int(mask[i]):08b}'
    for i in range(len(ip_1)):
        ip_1[i] = f'{int(ip_1[i]):08b}'
    for i in range(len(ip_2)):
        ip_2[i] = f'{int(ip_2[i]):08b}'
    for i in range(4):
        result_1 += str(int(mask[i]) & int(ip_1[i]))
    for i in range(4):
        result_2 += str(int(mask[i]) & int(ip_2[i]))
    if result_1 == result_2:
        return 0
    return 2
if Judgment_mask(mask) == 1 or Judgment_ip(ip_1) == 1 or Judgment_ip(ip_2) == 1:
    print('1')
else:
    print(mask_ip(mask,ip_1,ip_2))





比较好理解的方法,随让有点长

全部评论

相关推荐

合不合适,我自己说了才算
码农索隆:hr:“真执着啊,来我公司当法人吧”
点赞 评论 收藏
分享
05-22 09:23
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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