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

解答:
char* decodeString(char* s)
{
#define MAX_SIZE (30 * 300)
int i = 0;
int val = 0;
int r_idx = 0;
int num_idx = 0;
int buf_idx = 0;
int size = strlen(s);
int num[30] = { 0 };
char buf[30][300] = { 0 };
char *r = calloc(MAX_SIZE, 1);
for (i = 0; i < size; i++) {
if (isdigit(s[i])) {
val = (val * 10) + (s[i] - '0');
continue;
}
switch (s[i]) {
case '[':
num[num_idx++] = val;
strcat(buf[buf_idx++], r);
val = 0;
r_idx = 0;
memset(r, 0, MAX_SIZE);
break;
case ']':
num_idx -= 1;
buf_idx -= 1;
for (; num[num_idx] > 0; num[num_idx]--) {
strcat(buf[buf_idx], r);
}
strcpy(r, buf[buf_idx]);
buf[buf_idx][0] = 0;
r_idx = strlen(r);
break;
default:
r[r_idx++] = s[i];
break;
}
}
return r;
}