262
Se consideră următorul model (pattern): n[string] care este echivalent cu șirul (string)(string)...(string) (string repetat de de n ori). Pornind de la acest model orice șir de caractere poate fi codificat.
Exemple :
Exemplu
Intrare
3[a1[b2[c]]]
Ieșire
abccabccabcc
Intrare
3[a2[c]]2[x3[y]]
Ieșire
accaccaccxyyyxyyy
#include <bits/stdc++.h>
using namespace std;
#define Max 1001
#define DecodMax 100001
char a[Max], r[DecodMax];
deque< pair<int, int> > Q;
int main()
{
cin >> a;
int n = strlen(a), nr = 0, ind = 0, rep, indinit;
for (int i = 0; i < n; ++ i)
{
if (a[i] <= '9' && a[i] >= '0')
nr = nr * 10 + a[i] - '0';
else if (a[i] == '[')
Q.push_back(make_pair(ind, nr)), nr = 0;
else if (a[i] == ']')
{
rep = Q.back().second;
indinit = ind;
while (-- rep)
for (int j = Q.back().first; j < indinit; j ++)
r[ind ++] = r[j];
Q.pop_back();
}
else
r[ind ++] = a[i];
}
cout << r;
}
Comentarii