-
Notifications
You must be signed in to change notification settings - Fork 0
/
CON7_23.cpp
56 lines (51 loc) · 1.22 KB
/
CON7_23.cpp
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// Cho xâu ký tự mã hóa str. Hãy viết chương trình giải mã xâu ký tự str. Xâu ký tự mã hóa đượcthực hiện theo số lần lặp các xâu con của str như sau:
/*
Xâu đầu vào: “abbbababbbababbbab ”
Xâu mã hóa : "3[a3[b]1[ab]]"
2
1[b]
3[b2[ca]]
b
bcacabcacabcaca
*/
#include <bits/stdc++.h>
using namespace std;
void test(string s){
stack<int> num;
stack<char> temp;
string ans = "";
string final = "";
int number;
for (char c : s){
if (c >= '1' && c <= '9'){
num.push(c - '0');
}else if (c == ']'){
while(temp.top() != '['){
ans = temp.top() + ans;
temp.pop();
} temp.pop();
number = num.top(); num.pop();
while(number > 0){
if (number % 2 == 0){
ans += ans;
number -= 2;
}else{
final += ans;
number--;
}
}
ans = final;
}else{
temp.push(c);
}
}
cout<<ans;
}
int main(){
int t; cin >> t;
while(t--){
string s; cin >> s;
test(s);
cout<<endl;
}
}