输入两个ip区间段,判断是否有交集【2018华为软件岗位笔试题目】
2017-09-20 13:02
483 查看
问题:输入两个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
相关文章推荐
- 华为oj:判断两个IP是否属于同一个子网
- 华为2018届校园招聘笔试题目以及相应代码分享 软件开发岗位
- 华为机试-判断两个IP是否属于同一个子网
- 华为OJ:判断两个IP是否属于同一子网
- 华为机试在线训练-牛客网(23)判断两个IP是否属于同一子网
- 两个整数集合的交集 ———— 腾讯2014软件开发笔试题目
- 华为OJ基础篇-判断两个IP是否属于同一子网
- 华为OJ——判断两个IP是否属于同一子网
- [华为OJ] 判断两个IP是否属于同一子网
- 华为OJ 初级:判断两个IP是否属于同一子网
- 程序员面试题目总结--数组(二)【二分查找、找出给定数字出现次数、两个有序整型数组交集、找出数组中唯一的重复元素、判断数组中的数值是否连续相邻】
- 华为OJ——判断两个IP是否属于同一子网
- 华为OJ:判断两个IP是否属于同一子网
- 华为oj_判断两个IP是否属于同一子网
- 2018大疆校招软件岗位笔试题目(求有效工作时间)——未在线验证
- 华为OJ-判断两个IP是否在同一子网
- 华为OJ--判断两个IP是否属于同一个子网
- 华为OJ判断两个IP是否属于同一子网
- 剑指offer题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。
- [华为OJ--C++]075-判断两个IP是否属于同一子网