1. 程式人生 > 其它 >【劍指offer】15.二進位制中1的個數

【劍指offer】15.二進位制中1的個數

技術標籤:Leecode刷題進行時演算法java字串

題目描述:

轉換成二進位制解法Java

public int hammingWeight(int n) {
        String s = Integer.toBinaryString(n);
        int count = 0;
        for (int i = 0; i < s.length(); i++){
            if (s.charAt(i) == '1'){
                count++;
            }
        }
        return count;
    }

這樣的時間花費很高,相當於計算了兩次,轉換成2進位制一次,最後遍歷一次

高效率解法

public int hammingWeightQuick(int n) {
        int res = 0;
        while(n != 0) {
            //與是與二進位制的最後一位數相與
            res += n & 1;
            //移位操作也是以二進位制數進行移位
            n >>>= 1;
        }
        return res;
    }

掌握如何用&、>>等運算子處理二進位制資料