461. Hamming Distance


https://leetcode.com/problems/hamming-distance/

 

將兩個二進制數比較,輸出不同位數的個數

 

Input: x = 1, y = 4

Output: 2

Explanation:
1   (0 0 0 1)
4   (0 1 0 0)
       ↑   ↑

解題思路:
此題考察的是知識點是運算符,特別是異或運算符^
異或運算符作用為“相同出0,不同出1”,這個特性正好可以用來解題
那么正常的思路就是將x,y兩數進行異或運算,然后統計1的出現次數

解法(Python):

1 class Solution(object):
2     def hammingDistance(self, x, y):
3         return bin(x^y).count("1");

這個解法其實很low的,首先用了bin()函數,作用是將異或結果二進制化為字符串,然后利用字符串函數count統計1出現的次數並輸出

 

  優秀解法評析(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

所以這個解法將異或結果一個個移位,然后和1和運算,自然相同為1,不同為0,然后用count器加上這個相同的1自然就是“1出現的次數”

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM