方案一:
異或的性質上相同的為0,不同的為1
class
solution
:def
hammingdistance
(self, x:
int, y:
int)
->
int:
return
bin(x^y)
.count(
'1')
方案二:
使用位操作,分別逐次取出兩個數字的二進位制位出來進行比較,比較不同即可
class
solution
(object):
defhammingdistance
(self, x, y)
:"""
:type x: int
:type y: int
:rtype: int
"""ans =
0while
true
:if x==
0and y==0:
break
num1 = x&
1 num2 = y&
1if num1 != num2:
ans +=
1 x >>=1
y >>=1
return ans
ps:
&:按位與操作,只有 1 &1 為1,其他情況為0。可用於進製運算
python中有兩種方法判斷乙個數是不是偶數或者奇數:
in [29]
:3&1
out[29]
:1in [30]
:3%2
out[30]
:1in [31]
:4&1
out[31]
:0in [32]
:4%2
out[32]
:0
效能肯定是&1更高
^:異或,相同為0,相異為1。可用於加操作(不包括進製項)
將整數通過移位並與1進行與操作,即可判斷當時末尾是否為1.但是由於整數以二進位制補碼的方式儲存,正數右移與負數右移得到的效果並不相同,負數在右移過程中會自動補 1 .由於在c 或c++這種語言中資料的型別要先宣告,如 int為32位,而在python中,由於動態語言的特性,資料的位數理想上是不受限制的,因此可通過 移位的次數進行判斷,int型資料移位不能超過32即可,這樣程式的迴圈次數恆定為32.我認為的是當n&1的時候,得到的是二進位制末尾的數字,所以需要右移
class
solution
:def
numberof1
(self, n)
:# write code here
m =0 result =
0while m <32:
if n &1:
result +=
1 n = n >>
1 m +=
1return result
leetcode 漢明距離
漢明距離 兩個整數之間的漢明距離指的是這兩個數字對應二進位制位不同的位置的數目。給出兩個整數 x 和 y,計算它們之間的漢明距離。注意 0 x,y 231.示例 輸入 x 1,y 4 輸出 2 解釋 1 0 0 0 1 4 0 1 0 0 上面的箭頭指出了對應二進位制位不同的位置。如果存在於其中乙個...
LeetCode漢明距離Swift
兩個整數之間的漢明距離指的是這兩個數字對應二進位制位不同的位置的數目。給出兩個整數 x 和 y,計算它們之間的漢明距離。注意 0 x,y 231.示例 輸入 x 1,y 4 輸出 2解釋 1 000 1 4 010 0 上面的箭頭指出了對應二進位制位不同的位置。思路一class solution n...
LeetCode 461 漢明距離
兩個整數之間的漢明距離指的是這兩個數字對應二進位制位不同的位置的數目。給出兩個整數x和y,計算它們之間的漢明距離。注意 0 x,y 231.我一直都覺得我自己寫python一股c味兒 import math class solution def hammingdistance self,x,y n ...