Skip to content

Commit 592782c

Browse files
committed
Encode and Decode Strings solution
1 parent 9c1a79b commit 592782c

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

encode-and-decode-strings/kimyoung.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/**
2+
* Encodes a list of strings to a single string.
3+
*
4+
* @param {string[]} strs
5+
* @return {string}
6+
*/
7+
8+
const DELIMITER = "#";
9+
10+
var encode = function (strs) {
11+
let temp = "";
12+
for (const str of strs) { // encode using the delimiter by attaching the length of the array as well
13+
temp += `${str.length}${DELIMITER}` + str;
14+
}
15+
return temp;
16+
};
17+
18+
/**
19+
* Decodes a single string to a list of strings.
20+
*
21+
* @param {string} s
22+
* @return {string[]}
23+
*/
24+
var decode = function (s) { // decode using the length of array that is attached with the delimiter
25+
let result = [];
26+
let i = 0;
27+
while (i < s.length) {
28+
let j = i;
29+
while (s[j] !== DELIMITER) j++;
30+
const len = Number(s.slice(i, j));
31+
const word = s.slice(j + 1, j + len + 1);
32+
result.push(word);
33+
i = j + len + 1;
34+
}
35+
return result;
36+
};
37+
38+
/**
39+
* Your functions will be called as such:
40+
* decode(encode(strs));
41+
*/
42+
43+
// test cases
44+
console.log(["Hello", "World"]);
45+
46+
// time - O(n) - iterate through the list of strings once
47+
// space - O(n) - stores the strings

0 commit comments

Comments
 (0)