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...