1. 程式人生 > >輸入兩個ip區間段,判斷是否有交集【2018華為軟體崗位筆試題目】

輸入兩個ip區間段,判斷是否有交集【2018華為軟體崗位筆試題目】

問題:輸入兩個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