第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

合并相同的ip段算法

合并相同的ip段算法

PHP
qq_遁去的一_1 2019-03-17 11:13:25
$arr = array( '1.1.1.1_4.1.1.8', '2.2.2.1_5.5.5.5', '110.1.1.1_194.2.168.1', '192.168.1.1_223.233.223.1', '192.165.1.2_199.2.2.1', '4.4.4.4_6.6.6.6', '8.8.8.1_10.1.1.1', '8.1.1.1_9.10.10.10', '18.1.1.1_19.2.2.2', '9.0.0.1_12.9.9.10', ); $arr中下劃線用來(lái)間隔一個(gè)ip段的,現(xiàn)在要去合并相同的ip段,得到一個(gè)新的數(shù)組,不考慮子網(wǎng)掩碼,例如,1.1.1.1_192.168.1.1,假設(shè)有9.9.9.9或者在這之間的都會(huì)合并,最后只保留1.1.1.1_192.168.1.1,算法盡可能效率高一些 怕別人沒(méi)有聽(tīng)明白:舉個(gè)例子.1.1.1.1_3.3.3.33.2.2.2_6.6.6.6那么合并后的結(jié)果就是:1.1.1.1_6.6.6.6 假設(shè):1.1.1.1_3.3.3.34.4.4.4_6.6.6.6那么合并后的結(jié)果不變,還是這兩個(gè),因?yàn)橹虚g的段有間隔
查看完整描述

3 回答

?
BIG陽(yáng)

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊

沒(méi)看明白,要合并發(fā)的話,最后只可能有一個(gè)結(jié)果啊,按樓主的舉例來(lái)說(shuō)

1.1.1.1_223.233.223.1 肯定合含了所有段啊,
如果是這樣的話,比較最首位的最大值和最小值,分別記錄一下不就可以了,但這樣,無(wú)論數(shù)組里面有多少ip段,最后只有一個(gè)結(jié)果啊

既然樓主修改了問(wèn)題,也大概明白了
提供一個(gè)思路,把Ip 轉(zhuǎn)為 int以后就行比較,應(yīng)該會(huì)比較方便。

function ip2int(ip){
      var num = 0;
      ip = ip.split(".");
      num = Number(ip[0]) * 256 * 256 * 256 + Number(ip[1]) * 256 * 256 + Number(ip[2]) * 256 + Number(ip[3]);
      num = num >>> 0;
      return num;
  }
查看完整回答
反對(duì) 回復(fù) 2019-03-18
?
萬(wàn)千封印

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊

用土辦法的話:
ip地址4位,
1.首先分段按第一位分段,第一位作為key值,按key升序。
2.分組里面如果大于兩個(gè),就要取出最大和最小,第一位固定比較大小其實(shí)很容易。比方說(shuō)1.2.3.4和1.3.4.5,每位最多是三位數(shù),你可以補(bǔ)齊成12位數(shù)字,001002003004和001003004005就可以排序出最大和最小了。
3.第一步經(jīng)過(guò)第二步處理后,數(shù)據(jù)里面的段,就只有一個(gè)和兩個(gè)這樣子的類型,按key順序遍歷,處理就好了

查看完整回答
反對(duì) 回復(fù) 2019-03-18
  • 3 回答
  • 0 關(guān)注
  • 796 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)