漢明距離 Leetcode刷題 002

2021-09-20 02:15:15 字數 1423 閱讀 1822

先來了解一下漢明距離

在資訊理論中,兩個等長字串之間的漢明距離是兩個字串對應位置的不同字元的個數。換句話說,它就是將乙個字串變換成另外乙個字串所需要替換的字元個數。例如:

1011101 與 1001001 之間的漢明距離是 2。

2143896 與 2233796 之間的漢明距離是 3。

"toned" 與 "roses" 之間的漢明距離是 3。

應用

漢明距離更多的用於訊號處理,表明乙個訊號變成另乙個訊號需要的最小操作(替換位),實際中就是比較兩個位元串有多少個位不一樣,簡潔的操作時就是兩個位元串進行異或之後包含1的個數。漢明距在影象處理領》域也有這廣泛的應用,是比較二進位制影象非常有效的手段。

科普完之後來看看leecode上的題目:

兩個整數之間的漢明距離指的是這兩個數字對應二進位制位不同的位置的數目。

給出兩個整數xy,計算它們之間的漢明距離。

注意:

0 ≤x,y< 231.

示例:

輸入:x = 1, y = 4

輸出:2

解釋:

1 (0 0 0 1)

4 (0 1 0 0)

↑ ↑上面的箭頭指出了對應二進位制位不同的位置。

這個問題首先要把十進位制轉換成二進位制,在python中有函式 bin()來解決,之後確定兩個二進位制之間相對位置有沒有異同,這裡用到了位操作

python的位操作:

描述符描述

&與操作

1或操作

^異或操作

>>

左移位<<

右移位 這裡要用到異或操作,用「0」也是可以計數的。**如下:

class solution(object):

def hammingdistance(self, x, y):

""":type x: int

:type y: int

:rtype: int

"""return bin((x^y)).count('1')

本來想著用兩層for迴圈來做,沒有寫出來,換一種思路,沒想到一句就解決了。

看一下執行結果

執行結果

還可以,看一下排名靠前的大佬**也是這樣,可能是我太菜了吧,繼續努力。

leetcode 漢明距離

漢明距離 兩個整數之間的漢明距離指的是這兩個數字對應二進位制位不同的位置的數目。給出兩個整數 x 和 y,計算它們之間的漢明距離。注意 0 x,y 231.示例 輸入 x 1,y 4 輸出 2 解釋 1 0 0 0 1 4 0 1 0 0 上面的箭頭指出了對應二進位制位不同的位置。如果存在於其中乙個...

leetcode演算法題 461 漢明距離

兩個整數之間的漢明距離指的是這兩個數字對應二進位制位不同的位置的數目。給出兩個整數 x 和 y,計算它們之間的漢明距離。注意 0 x,y 231.示例 輸入 x 1,y 4 輸出 2 解釋 1 0 0 0 1 4 0 1 0 0 上面的箭頭指出了對應二進位制位不同的位置。class solution...

LeetCode漢明距離Swift

兩個整數之間的漢明距離指的是這兩個數字對應二進位制位不同的位置的數目。給出兩個整數 x 和 y,計算它們之間的漢明距離。注意 0 x,y 231.示例 輸入 x 1,y 4 輸出 2解釋 1 000 1 4 010 0 上面的箭頭指出了對應二進位制位不同的位置。思路一class solution n...