Design Bitset LeetCode solution in JavaScript

1
var Bitset = function (size) {
2
//this.bits = new Array(size).fill(0);
3
//this.bitsOp = new Array(size).fill(1);
4
this.set0 = new Set();
5
this.set1 = new Set();
6
for (let i = 0; i < size; i++) this.set0.add(i);
7
};
8

9
/**
10
* @param {number} idx
11
* @return {void}
12
*/
13
Bitset.prototype.fix = function (idx) {
14
//this.bits[idx] = 1;
15
//this.bitsOp[idx] = 0;
16
if (this.set0.has(idx)) {
17
this.set1.add(idx);
18
this.set0.delete(idx);
19
}
20
};
21

22
/**
23
* @param {number} idx
24
* @return {void}
25
*/
26
Bitset.prototype.unfix = function (idx) {
27
//this.bits[idx] = 0;
28
//this.bitsOp[idx] = 1;
29
if (this.set1.has(idx)) {
30
this.set0.add(idx);
31
this.set1.delete(idx);
32
}
33
};
34

35
/**
36
* @return {void}
37
*/
38
Bitset.prototype.flip = function () {
39
//this.bits = this.bits.map(x=>(x)?0:1);
40
//this.bits.forEach(x=>x=(x)?0:1);
41
[this.set0, this.set1] = [this.set1, this.set0];
42
};
43

44
/**
45
* @return {boolean}
46
*/
47
Bitset.prototype.all = function () {
48
//return (this.bits.filter(x=>x).length == this.bits.length)
49
//return !this.bits.includes(0);
50
//for (let i = 0; i<this.bits.length; i++)
51
//if (this.bits[i] === 0) return false;
52
//return true;
53
return this.set0.size === 0;
54
};
55

56
/**
57
* @return {boolean}
58
*/
59
Bitset.prototype.one = function () {
60
//return this.bits.filter(x=>x).length>0
61
//return this.bits.includes(1);
62
//for (let i = 0; i<this.bits.length; i++)
63
//if (this.bits[i] === 1) return true;
64
//return false;
65
return this.set1.size > 0;
66
};
67

68
/**
69
* @return {number}
70
*/
71
Bitset.prototype.count = function () {
72
//return this.bits.filter(x=>x).length
73
//return this.bits.reduce((sum, cur)=>sum+cur);
74
return this.set1.size;
75
};
76

77
/**
78
* @return {string}
79
*/
80
Bitset.prototype.toString = function () {
81
//return this.bits.join('');
82
let set = new Array(this.set0.size + this.set1.size);
83
for (let i = 0; i < set.length; i++) {
84
set[i] = this.set0.has(i) ? 0 : 1;
85
}
86
return set.join("");
87
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0