將兩個(gè)二進(jìn)制數(shù)比較,輸出不同位數(shù)的個(gè)數(shù)
站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到北鎮(zhèn)網(wǎng)站設(shè)計(jì)與北鎮(zhèn)網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站建設(shè)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國(guó)際域名空間、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋北鎮(zhèn)地區(qū)。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ù)”