文巾解题 461. 汉明距离
生活随笔
收集整理的這篇文章主要介紹了
文巾解题 461. 汉明距离
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 題目描述
2 解題思路
2.1 方法1:計算x和y的異或,輸入位不同的時候,輸出為1
lass Solution:def hammingDistance(self, x: int, y: int) -> int:tmp=x^yret=bin(tmp)return(ret.count('1')) class Solution:def hammingDistance(self, x: int, y: int) -> int:tmp=x^yret=bin(tmp)num=0for i in ret:if(i=='1'):num+=1return(num)2.2 方法2?用移位操作代替count函數
class Solution:def hammingDistance(self, x: int, y: int) -> int:tmp=x^ynum=0while(tmp!=0):if(tmp&1==1):num+=1tmp=tmp>>1return(num)2.3 方法3:布萊恩-科尼根算法
當我們在number和number-1上做and位運算的時候,原數字最右邊等于1的那一比特會被移除。
這樣做所需的時間比方法2小(方法2是每一位都要考慮)。
class Solution:def hammingDistance(self, x: int, y: int) -> int:tmp=x^ynum=0while(tmp!=0):tmp=tmp&(tmp-1)num+=1return(num)總結
以上是生活随笔為你收集整理的文巾解题 461. 汉明距离的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文巾解题 1190. 反转每对括号间的子
- 下一篇: 文巾解题 面试题 03.06. 动物收容