461 漢明距離

2021-10-19 11:43:53 字數 2803 閱讀 4874

461. 漢明距離

兩個整數之間的漢明距離指的是這兩個數字對應二進位制位不同的位置的數目。給出兩個整數xy,計算它們之間的漢明距離。

注意:

0 ≤x,y< 231.

示例:

輸入:x = 1, y = 4輸出:2解釋:1   (0 0 0 1)

4 (0 1 0 0)

↑ ↑

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

第一版**: 就是直接求整數的二進位制表示式, 又因為前兩位是"0b", 從第三位開始擷取有用的資訊.又因為如果兩個數差別的比較大可能顯示的位數不同, 而進行了補充, 其實這是多餘的, 並沒有必要這樣做

雖然是通過了, 但是效果很差需要改善

第二版**: 第一版**就是嚴格按照題意的表達來計算的, 其實有直接求異或的操作就直接求到了結果, 然後的工作就是求這個結果資料的二進位制有多少個1了

雖然沒有質的提公升, 但是我們需要掌握這種求乙個數的二進位制有多少個1 的方法, 為什麼這樣就可以求xor有多少個1 呢?

如果xor不為0, 那麼他的二進位制中肯定有至少乙個1 的, 我們讓res += 1  然後就是我們怎麼消去了其中的乙個1, 我們這裡消去的就是最後的乙個1 .仔細想想我們將xor- 1 就是講最後乙個1 變成了0, 然後將這個1 後面的都變成了1, 這樣把這兩個數求與操作就將這個1 化為了0

第三版**: 另外一種求解二進位制中多少個1 的方法

和上面的效果幾乎是一樣的, 這裡的原理是: 每次只看最後一位是不是1 , 如果是那就res += 1  然後右移一位, 直到全部為0

第四版**: 其實求到了xor就可以直接轉換成str進行統計了

雖然時間上提公升了很多, 而且好多大佬也是這麼做的, 時間最短的大佬也是這麼寫的, 但是我認為使用到了count()這個內建的函式, 並不是很好, 還是自己寫比較好

第五版**

和前面的效果相當, 果然沒有內建的效率高, 但是方法大致就這幾種吧!

461 漢明距離

define ll long long class solution return ans 補一張真值表 另外學到了乙個 x x 1 的妙用 x 1會使得x的最右邊的1變為0 x x 1 假如x只有乙個1,那麼結果就是0了 class solution return y python的實現一樣的 但...

461 漢明距離

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

461 漢明距離

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