Write a function that takes an unsigned integer and returns the number of ‘1’ bits it has (also known as the Hamming weight).
編寫一個函式,且可從一個沒有符號的數列中,回傳符合 '1' 的數量。
Example 1:
Input: n = 00000000000000000000000000001011
Output: 3
Explanation: The input binary string 00000000000000000000000000001011
has a total of three '1' bits.
Example 2:
Input: n = 00000000000000000000000010000000
Output: 1
Explanation: The input binary string 00000000000000000000000010000000
has a total of one '1' bit.
Example 3:
Input: n = 11111111111111111111111111111101
Output: 31
Explanation: The input binary string 11111111111111111111111111111101
has a total of thirty one '1' bits.
Solution:
1. 宣告 count 次數為 0。
2. 宣告 nums 為 n.toString 二進制的字串,且將陣列中的每個數值分割為單一元素。
Ex. Input = 3
toString(2) = 00000000000000000000000000001011
toString(2).split("") =
[
'0', '0', '0', '0', '0', '0',
'0', '0', '0', '0', '0', '0',
'0', '0', '0', '0', '0', '0',
'0', '0', '0', '0', '0', '0',
'0', '0', '0', '0', '1', '0',
'1', '1'
]
3. 運用「for in」將每個元素皆除以2,如果剩餘1,則 count++。
4. 回傳 count 次數。
Code:
var hammingWeight = function(n) {
let count = 0
let nums = n.toString(2).split("");
for (let num in nums) {
if (nums[num] % 2 === 1) {
count ++
}
}
return count
};
FlowChart:
Example 1
Input: n = 00000000000000000000000000001011
1 23
Output count = 3
Example 2
Input: n = 00000000000000000000000010000000
1
Output count = 1
Example 3
Input: n = 11111111111111111111111111111101
1---------------------------->31
Output count = 31
.toString(2):
const x = 6; console.log(x.toString(2)); // displays '110'
.split():
const str = 'The quick brown fox jumps over the lazy dog.';
const words = str.split(' ');
console.log(words[3]);
// expected output: "fox"
const chars = str.split('');
console.log(chars[8]);
// expected output: "k"