461. Hamming Distance

題目的要求是得出兩個(gè)整數(shù)的二進(jìn)制表示下對應(yīng)位數(shù)上的不同數(shù)字的位數(shù)。
下方是官網(wǎng)給出的范例,可以幫助理解。

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.

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

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代碼庫里面已經(jīng)有內(nèi)置的函數(shù)Integer.bitCount(x)來統(tǒng)計(jì)一個(gè)整數(shù)二進(jìn)制表示下1的個(gè)數(shù),所以此題還可以簡化成return Integer.bitCount( x ^ y);。還一種不同的思路來計(jì)算一個(gè)數(shù)(二進(jìn)制表示時(shí))1的個(gè)數(shù),通過每次右移再與1與依次檢驗(yàn)每一位上是否為1

int result = x ^ y;
int count = 0;
for (int i = 0; i < 32; i++) {
    count += (result >> i) & 1; 
}
return count;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容