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

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

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

import sys


def check_ip(ip):
    try:
        list_a = list(map(int, ip.split(".")))
        for i in list_a:
            if 0 <= i <= 255:
                continue
            else:
                return False
        return True
    except:
        return False


def check_yanma(yanma):
    try:
        list_a = list(map(int, yanma.split(".")))
        for i in list_a:
            if 0 <= i <= 255:
                continue
            else:
                return False

        yanma_bin = []
        for i in list_a:
            yanma_bin.append(bin(i)[2:].zfill(8))
        yanma_str = "".join(yanma_bin)
        index = yanma_str.find("0")
        if index == -1:
            return True
        else:
            zero_str = yanma_str[index:]
            if "1" in zero_str:
                return False
            else:
                return True
    except:
        return False


def get_zhujihao(ip, yanma):
    try:
        
        list_a = list(map(int, yanma.split(".")))
       
        yanma_bin = []
        for i in list_a:
            yanma_bin.append(bin(i)[2:].zfill(8))
    
        yanma_str = "".join(yanma_bin)
      
        list_b = list(map(int, ip.split(".")))
 
        ip_bin = []
        for i in list_b:
            ip_bin.append(bin(i)[2:].zfill(8))
        
        ip_str = "".join(ip_bin)
     
        list_zhujihao = []
        for i in range(len(yanma_str)):
            list_zhujihao.append(
                "1" if yanma_str[i] == "1" and ip_str[i] == "1" else "0"
            )
        str_zhujihao = "".join(list_zhujihao)
        return str_zhujihao
    except:
        pass


lines = []
while True:
    line = sys.stdin.readline().strip()
    if line == "":
        break
    else:
        lines.append(line)
# print(lines)
is_yanma = False
is_ip = False
yanma = ""
ip = ""
for i in range(len(lines)):
    if i % 3 == 0:
        if check_yanma(lines[i]):
            is_yanma = True
            yanma = lines[i]
           
        else:
        
            is_yanma = False
            is_ip = False
    elif i % 3 == 1:
        if is_yanma and check_ip(lines[i]):
            is_ip = True
            ip = lines[i]
  
        else:
      
            is_ip = False
    else:
        if is_ip and check_ip(lines[i]):
            if get_zhujihao(ip, yanma) == get_zhujihao(lines[i], yanma):
                print(0)
            else:
                print(2)
        else:
            print(1)
全部评论

相关推荐

来,说点可能被同行“骂”的大实话。🙊当初接数字马力Offer时,朋友都说:“蚂蚁的“内包”公司?你想清楚啊!”但入职快一年后的今天,我反而对他有了不一样的看法!🔹&nbsp;是偏见?还是信息差!之前没入职之前外面都在说什么岗位低人一等这类。实际上:这种情况不可至否,不能保证每个团队都是其乐融融。但我在的部门以及我了解的周边同事都还是十分好相处的~和蚂蚁师兄师姐之间也经常开一些小玩笑。总之:身份是蚂蚁公司给的,地位是自己挣的(一个傲娇女孩的自述)。🔹&nbsp;待遇?玩的就是真实!试用期工资全额发!六点下班跑得快(早9晚6或者早10晚7,动态打卡),公积金顶格交。别听那些画饼的,到手的钱和下班的时间才是真的(都是牛马何必难为牛马)。🔹&nbsp;能不能学到技术?来了就“后悔”!我们拥有权限直通蚂蚁知识库,技术栈多到学不完。说“学不到东西”的人,来了可能后悔——后悔来晚了(哈哈哈哈,可以不学但是不能没有)!💥&nbsp;内推地址:https://app.mokahr.com/su/ueoyhg❗我的内推码:NTA6Nvs走我的内推,可以直达业务部门,面试流程更快速,进度可查!今天新放HC,之前挂过也能再战!秋招已经正式开始啦~机会就摆在这,敢不敢来试一试呢?(和我一样,做个勇敢的女孩)
下午吃泡馍:数字马力的薪资一般哇,5年经验的java/测试就给人一万出头,而且刚入职第三天就让人出差,而且是出半年
帮你内推|数字马力 校招
点赞 评论 收藏
分享
迷茫的大四🐶:干脆大厂搞个收费培训得了,这样就人均大厂了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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