將兩個(gè)二進(jìn)制數(shù)比較,輸出不同位數(shù)的個(gè)數(shù)
Input: x = 1, y = 4
Output: 2
Explanation:
1 (0 0 0 1)
4 (0 1 0 0)
↑ ↑
解題思路:
此題考察的是知識(shí)點(diǎn)是運(yùn)算符,特別是異或運(yùn)算符^
異或運(yùn)算符作用為“相同出0,不同出1”,這個(gè)特性正好可以用來(lái)解題
那么正常的思路就是將x,y兩數(shù)進(jìn)行異或運(yùn)算,然后統(tǒng)計(jì)1的出現(xiàn)次數(shù)
解法(Python):
1 class Solution(object):
2 def hammingDistance(self, x, y):
3 return bin(x^y).count("1");
這個(gè)解法其實(shí)很low的,首先用了bin()函數(shù),作用是將異或結(jié)果二進(jìn)制化為字符串,然后利用字符串函數(shù)count統(tǒng)計(jì)1出現(xiàn)的次數(shù)并輸出
優(yōu)秀解法評(píng)析(Java):
1 public int hammingDistance(int x, int y) {
2 int xor = x ^ y, count = 0;
3 for (int i=0;i<32;i++) count += (xor >> i) & 1;
4 return count;
5 }
由于題目有限制0 ≤ x
, y
< 231
所以這個(gè)解法將異或結(jié)果一個(gè)個(gè)移位,然后和1和運(yùn)算,自然相同為1,不同為0,然后用count器加上這個(gè)相同的1自然就是“1出現(xiàn)的次數(shù)”
網(wǎng)站欄目:461.HammingDistance-創(chuàng)新互聯(lián)
當(dāng)前鏈接:http://jinyejixie.com/article6/gppig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、定制網(wǎng)站、品牌網(wǎng)站制作、全網(wǎng)營(yíng)銷(xiāo)推廣、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容