Decode a string
Tags:
Medium
Skills:
Stack
June 24, 2025
04:32 AM
No headings found
Loading content...
Related Posts
Leetcode
No headings found
Related Posts
Leetcode
Approach
Chúng mình sẽ maintain 2 stack để quản lý các số lặp và chuỗi tạm thời khi gặp các dấu ngoặc vuông
1/**
2string_stack -> maintain string
3number_stack -> maintain repeat number
4
5Input: s = "3[a]2[bc]"
6Output: "aaabcbc"
7
8 */
9
10function decodeString(s: string): string {
11 let number_stack: number[] = [];
12 let string_stack: string[] = [];
13
14 let current_string: string = "";
15 let current_number: number = 0
16
17 for(const char of s) {
18 if(!isNaN(Number(char))) {
19 current_number = current_number * 10 + Number(char);
20 } else if (char === '[') {
21 string_stack.push(current_string)
22 number_stack.push(current_number);
23 current_string = "";
24 current_number = 0;
25 } else if (char === ']') {
26 const repeat_times = number_stack.pop()!;
27 const prev_string = string_stack.pop()!;
28 current_string = prev_string + current_string.repeat(repeat_times)
29 } else {
30 current_string += char
31 }
32 }
33
34 return current_string;
35};