输入两个ip区间段,判断是否有交集【2018华为软件岗位笔试题目】

版权声明:虽然本文为博主原创文章,不过随便转载,但必须留下出处。 https://blog.csdn.net/Fighting_Dreamer/article/details/78039576

问题:输入两个ip区间段,判断是否有交集

Python3版解决方案


ip1 = input()
ip2 = input()
ip3 = input()
ip4 = input()
def transIp2Num(ip):
    _1,_2,_3,_4 = ip.split('.')
    num = int(_4)*1 + int(_3)*256 + int(_2) * 256 * 256 + int(_1) * 256 *256 *256
    return num
ip1 = transIp2Num(ip1)
ip2 = transIp2Num(ip2)
ip3 = transIp2Num(ip3)
ip4 = transIp2Num(ip4)
if ip3>ip2 | ip4<ip1 :
    print('没有交集')
else:
    print('有交集')

解释一下
一个ip地址其实可以看作是一个四位的数字,只不过是256进制的而已

例如:百度的IP 可以对应一个数字
61.135.169.121->1032300921
因此一个ip段就是一个区间了,接下来的问题就是比较两个区间的交集问题了
so easy 了


题外话

其实下面的3个网址是一样的,你可以点击试试。
http://1032300921
http://61.135.169.121/
http://www.baidu.com

猜你喜欢

转载自blog.csdn.net/Fighting_Dreamer/article/details/78039576
今日推荐