-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSerialize.js
More file actions
37 lines (35 loc) · 815 Bytes
/
Serialize.js
File metadata and controls
37 lines (35 loc) · 815 Bytes
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
28
29
30
31
32
33
34
35
36
37
function serialize(numbers) {
numbers = numbers.sort((a, b) => a - b);
let result = [];
let currentNum = null;
let currentLen = 0;
for (let num of numbers) {
if (num === currentNum) {
currentLen++;
} else {
if (currentNum !== null) {
result.push(`${currentLen} ${currentNum}`);
}
currentNum = num;
currentLen = 1;
}
}
result.push(`${currentLen} ${currentNum}`);
return result.join(" ");
}
function deserialize(string) {
let result = new Array();
let parts = string.split(" ");
for (let i = 0; i < parts.length; i += 2) {
let count = parseInt(parts[i]);
let num = parseInt(parts[i + 1]);
for (let j = 0; j < count; j++) {
result.push(String(num));
}
}
return result.join(' ');
}
export {
serialize,
deserialize
}