面試題–回憶篇

來源:互聯網
上載者:User

今天不知道怎麼突然想到了 haffman編碼,爾後又突然想到了 剛進公司時的面試題 -- 求海明重量。

難得,那就介紹下海明這個玩意,不要再忘記了,以此紀念。

 

記得當時題目不是直接寫的海明重量,是算一個0、1數串的1的個數。當時好像寫了好多廢函數,年代久遠,我忘了。

 

說海明重量前,得先介紹什麼是海明距離:

定義為:兩個等長的串,對應位不同的個數,如

112233 和 113322 有4位不同,那麼這個距離就是4.

 

接著就是海明重量:

一個串,對應於等長的0串的海明距離,如

112233,那麼與000000比較,都不同,距離為6;這個重量放在二進位串中比較合適,如 bitmap.

 

110011,那麼與000000比較,距離就是4,我們發現,這個距離也就是1的個數,也就是我做的面試題。

 

具體應用,我瞭解的稍微相關的就是 位元影像 -- bitmap了,孤陋寡聞了。

 

 

接著將收集的計算海明重量的方法以代碼形式羅列:

/* K&R method:<br /> * e.g:<br /> *x 01010101<br /> * x-1 01010100<br /> *&<br /> * 01010100 (delete less significant 1 of x)<br /> *=> wt(x&(x-1)) = wt(x) - 1<br /> */<br />unsigned int KRwt(unsigned int x)<br />{<br />return x ? (KRwt(x & (x - 1)) + 1) : 0;<br />}<br />

看到介紹時,眼前突然一亮,實現起來更是一亮,竟然是一行,雖然效率不高,但是比起迴圈來,我更喜歡這個。希望以前我沒有用迴圈來算這個。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.