461. Hamming Distance

題目的要求是得出兩個整數的二進制表示下對應位數上的不同數字的位數。
下方是官網給出的范例,可以幫助理解。

Input: x = 1, y = 4
Output: 2
Explanation:1 (0 0 0 1)
            4 (0 1 0 0)
                   ↑ ↑
The above arrows point to positions where the corresponding bits are different.

這個題目要解出來很簡單,只需要知道異或這個概念就行了:兩個數(二進制)值相同得0,不相同得1。
因此只要設一個變量result = x ^ y,再去數result表示為二進制時1的個數就行了。代碼如下

public class Solution {
    public int hammingDistance(int x, int y) {
        String temp = Integer.toBinaryString(x ^ y);
        int count = 0;
        char[] tempArray = temp.toCharArray();
        for (int i = 0; i < temp.length(); i++) {
            if (tempArray[i] == '1') {
                count += 1;
            }
        }
        return count;
    }
}

Top Solution里還提到了Java代碼庫里面已經有內置的函數Integer.bitCount(x)來統計一個整數二進制表示下1的個數,所以此題還可以簡化成return Integer.bitCount( x ^ y);。還一種不同的思路來計算一個數(二進制表示時)1的個數,通過每次右移再與1與依次檢驗每一位上是否為1

int result = x ^ y;
int count = 0;
for (int i = 0; i < 32; i++) {
    count += (result >> i) & 1; 
}
return count;
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 原文首發于 baishusama.github.io,歡迎圍觀~肝不動業務代碼的時候,就時不時地做個題吧/w\ 題...
    白蜀黍閱讀 251評論 0 0
  • 1 關鍵字 1.1 關鍵字的概述 Java的關鍵字對java的編譯器有特殊的意義,他們用來表示一種數據類型,或...
    哈哈哎呦喂閱讀 678評論 0 0
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,779評論 18 399
  • 許多年來,中國的經濟一直處于通脹的狀態,也就是百姓常說的,錢越來越毛,越來越不值錢。二十年前,萬元戶就是中產以上,...
    王鈺太閱讀 454評論 0 0
  • 文 / 珍珠海 大理的景比你想象的好看,故事卻不一定有你想象的好聽。 因其面朝洱海,背靠蒼山,大理成為很多人的向往...
    楠珠珠閱讀 820評論 11 10