Skip to content

Commit 6530354

Browse files
committed
Encode and Decode Strings solution
1 parent aeabb3d commit 6530354

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/**
2+
* ๋ฌธ์ž์—ด ๋ฆฌ์ŠคํŠธ๋ฅผ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ์ธ์ฝ”๋”ฉํ•˜๊ณ , ๋‹ค์‹œ ๋””์ฝ”๋”ฉ ํ•˜๊ธฐ
3+
*
4+
* ์ ‘๊ทผ ๋ฐฉ๋ฒ•:
5+
* ๊ธธ์ด ๊ธฐ๋ฐ˜ ์ธ์ฝ”๋”ฉ => ๊ฐ ๋ฌธ์ž์—ด๋งˆ๋‹ค "๊ธธ์ด#๋ฌธ์ž์—ด" ํ˜•์‹์œผ๋กœ ์ธ์ฝ”๋”ฉ
6+
* "#"์„ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์ž์—ด์„ ๋‚˜๋ˆ„๊ณ , ๊ธธ์ด๋ฅผ ์ด์šฉํ•ด ์›๋ž˜ ๋ฌธ์ž์—ด์„ ๋ณต์›ํ•˜์—ฌ ๋””์ฝ”๋”ฉ
7+
*/
8+
9+
/**
10+
* @param {string[]} strs - ์ธ์ฝ”๋”ฉํ•  ๋ฌธ์ž์—ด ๋ฆฌ์ŠคํŠธ
11+
* @return {string} - ์ธ์ฝ”๋”ฉ๋œ ๋ฌธ์ž์—ด
12+
*/
13+
var encode = function (strs) {
14+
if (!strs || strs.length === 0) return '';
15+
return strs.map((str) => str.length + '#' + str).join('');
16+
};
17+
18+
/**
19+
* @param {string} s - ๋””์ฝ”๋”ฉํ•  ์ธ์ฝ”๋”ฉ๋œ ๋ฌธ์ž์—ด
20+
* @return {string[]} - ์›๋ž˜์˜ ๋ฌธ์ž์—ด ๋ฆฌ์ŠคํŠธ
21+
*/
22+
var decode = function (s) {
23+
if (!s || s.length === 0) return [];
24+
25+
const result = [];
26+
let i = 0;
27+
28+
while (i < s.length) {
29+
const delimiterIndex = s.indexOf('#', i); // '#'์˜ ์œ„์น˜ ์ฐพ๊ธฐ
30+
const length = parseInt(s.slice(i, delimiterIndex)); // ๊ธธ์ด ์ถ”์ถœ
31+
32+
const start = delimiterIndex + 1; // ๋ฌธ์ž์—ด ์‹œ์ž‘ ์œ„์น˜
33+
result.push(s.slice(start, start + length)); // ์•Œ์•„๋‚ธ ๊ธธ์ด๋งŒํผ ๋ฌธ์ž์—ด ์ถ”์ถœ ํ›„ ๊ฒฐ๊ณผ์— ์ถ”๊ฐ€
34+
i = start + length; // ๋‹ค์Œ ๋ฌธ์ž์—ด ์‹œ์ž‘ ์œ„์น˜๋กœ ํฌ์ธํ„ฐ ์ด๋™
35+
}
36+
37+
return result;
38+
};

0 commit comments

Comments
ย (0)