參考資訊:
https://www.cnblogs.com/grandyang/p/5849037.html
題目:

解答:
char* decodeString(char* s)
{
#define S_MAX_SIZE (300 * 30)
int v = 0;
int c0 = 0;
int c1 = 0;
int r_idx = 0;
int num_idx = 0;
int buf_idx = 0;
int num[30] = { 0 };
int len = strlen(s);
char *r = NULL;
char buf[30][S_MAX_SIZE] = { 0 };
r = malloc(S_MAX_SIZE);
memset(r, 0, S_MAX_SIZE);
for (c0 = 0; c0 < len; c0++) {
if (isdigit(s[c0])) {
v = (10 * v) + (s[c0] - '0');
continue;
}
switch (s[c0]) {
case '[':
num[num_idx++] = v;
strcat(buf[buf_idx++], r);
v = 0;
r_idx = 0;
memset(r, 0, S_MAX_SIZE);
break;
case ']':
int n = num_idx - 1;
int b = buf_idx - 1;
for (c1 = 0; c1 < num[n]; c1++) {
strcat(buf[b], r);
}
strcpy(r, buf[b]);
buf[b][0] = 0;
r_idx = strlen(r);
num_idx -= 1;
buf_idx -= 1;
break;
default:
r[r_idx++] = s[c0];
break;
}
}
return r;
}