-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHammingWeight.kt
More file actions
27 lines (26 loc) · 1.64 KB
/
HammingWeight.kt
File metadata and controls
27 lines (26 loc) · 1.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package ru.romanow.easy
/**
* Реализовать функцию, которая принимает целочисленное число без знака
* и возвращает количество битов 1 (так же известное как [Hamming weight](https://en.wikipedia.org/wiki/Hamming_weight))
*
* **Замечание**
* * Обратите внимание, что в некоторых языках, например в Java, не существует беззнакового целочисленного типа.
* В этом случае входные данные будут представлены как целочисленный тип со знаком. Это не должно повлиять
* реализацию, поскольку внутреннее двоичное представление целого числа одинаково, независимо от того,
* знаковое оно или нет.
* * В Java компилятор представляет целые числа со знаком, используя дополнения до 2. Таким образом, в 3 примере
* входные данные представляют собой целое число со знаком (т.е. не 4294967293, а -3).
*
* [https://leetcode.com/problems/number-of-1-bits/](https://leetcode.com/problems/number-of-1-bits/)
*/
class HammingWeight {
fun hammingWeight(n: Int): Int {
var count = 0
var current = n
while (current != 0) {
count += current.and(1)
current = current.ushr(1)
}
return count
}
}