C演算法 位運算公升級版

2021-10-03 21:35:32 字數 1149 閱讀 9493

leetcode751題,ip 到 cidr。之前介紹過簡單的c資料結構-位運算處理,但是這道題新鮮的東西很多,值得再寫一篇。

題目意思就是取ip後聯絡n個位址,但是表達方法要用cidr。

真的想不出來真的想不出來真的想不出來,作者太牛了,戳這裡看作者題解!

整個神奇的地方有:

1、sscanf可以轉字串為整數,作為初始計算點。

2、對整數取二進位制下最後乙個1的位置,這個位置如果比n小,那麼可以生成一串位址,然後檢查與n的關係繼續迴圈。獲取二進位制下最後乙個1的位置方法是x&-x

3、通過sprintf轉整數為拼接字串。

4、申請指標空間居然是ret = (char *)realloc(ret, sizeof(char) * (count + 1));–但是這個函式不夠安全

1、字串轉整數處理

unsigned

long

chartolong

(char

*ip)

2、進行功能處理

while

(n >0)

oneloc = bestlow >>1;

while

(oneloc)

ret =

(char**

)realloc

(ret,

sizeof

(char*)

*(count +1)

);ret[count]=(

char*)

malloc

(sizeof

(char

)*ipmax)

;longtochar

(iplong,

32- prefix, ret[count]);

n -= bestlow;

iplong +

= bestlow;

count++

;}

3、字串轉整數

void

longtochar

(unsigned

int iplong,

int prefix,

char

*ret)

介面公升級版

介面公升級版 假設乙個介面由2w個子類實現它 假如在介面內加乙個方法 那麼按照定義就要在這所有的子類裡面都實現 所以我們引入新概念 介面裡可以定義普通方法 即這個普通方法可以不被實現 普通方法就要用default實現 介面還可以實現static方法 呼叫是直接由介面.方法名呼叫 inte ce im...

採藥公升級版

問題描述 辰辰是個天資聰穎的孩子,他的夢想是成為世界上最偉大的醫師。為此,他 想拜附近最有威望的醫師為師。醫師為了判斷他的資質,給他出了乙個難題。醫 師把他帶到乙個到處都是草藥的山洞裡對他說 孩子,這個山洞裡有一些不同 的草藥,採每一株都需要一些時間,每一株也有它自身的價值。我會給你一段時 間,在這...

約瑟夫問題公升級版

編號為1 n的n個人按順時針方向圍坐一圈,每人持有乙個密碼 正整數,可以自由輸入 開始人選乙個正整數作為報數上限值m,從第乙個人按順時針方向自1開始順序報數,報道m時停止報數。報m的人出列,將他的密碼作為新的m值,從他順時針方向上的下乙個人開始從1報數,如此下去,直至所有人全部出列為止。includ...