漢明距離

漢明距離

兩個整數之間的漢明距離指的是這兩個數字對應二進制位不同的位置的數目。給出兩個整數 x 和 y,計算它們之間的漢明距離。
解題思路:先分別把x和y轉化爲二進制,然後二進制數組對應位置的元素的異或結果相加,得到的就是漢明距離。
但是看到其他人做的,太簡單了吧!
Integer中有一個方法bitCount(),用來統計整數對應的二進制數中1的個數。
對於本題的做法(一行代碼就完事)。不得不說,Java中有很多很神奇的函數,太6了。

 public int hammingDistance(int x, int y) {
        return Integer.bitCount(x^y);
    }

我自己的思路,先把x和y轉化爲二進制,然後將兩個字符串補0至一樣長。最後把二進制數組對應位置的元素的異或結果相加,就可以得到漢明距離。代碼有點多。

 public int hammingDistance(int x, int y) {
       int s=0;
        String a=Integer.toBinaryString(x);
        String b=Integer.toBinaryString(y);
        int al=a.length(),bl=b.length();
        int len=al>bl?al:bl;
        if (al>bl){
            for (int i=0;i<al-bl;i++)
                b="0"+b;
        }else {
            for (int i=0;i<bl-al;i++){
                a="0"+a;
            }
        }
        for (int i=0;i<len;i++){
            s+=((a.charAt(i)-'0')^(b.charAt(i)-'0'));
        }
        return s;
    }
發佈了39 篇原創文章 · 獲贊 31 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章