给出一个表达式s,此表达式包括数字,字母以及方括号,在方括号前面的数字表示方括号里面的内容重复的次数(括号内的内容可以是字符串或另一个表达式),请编写程序将这个表达式展开成一个字符串。

输入样例:(每一行输入一个表达式)

abc3[a]

3[abc]

4[ac]dy

输出样例:(每一行输出表达式s展开成的字符串)

abcaaa

abcabcabc

acacacacdy

提示:样例没有给出嵌套的情况,但是题目说了括号内仍然可能是表达式,那就说明有嵌套用例的出现

附上代码

#include <stdio.h>
#include <ctype.h>
#include <string.h>
char str[10000], str1[10000];
int t, len;
int isString(char * str, int i)
{
    int num = 0;
    if (isalpha(str[i]))
    {
        str1[t++] = str[i];
    }
    else if (isdigit(str[i]))
    {
        while (isdigit(str[i])) // 可能不是一位数
        {
            num *= 10;
            num += str[i++] - 48;
        }
    }
    if (str[i] == '[')
    {
        ++i;
        int n;
        while (num--)
        {
            n = i;
            while (n < len && str[n] != ']')
            {
                if (isdigit(str[n]))
                {
                    n = isString(str, n);
                    if (str[n] == ']')    break;
                }
                str1[t++] = str[n++];
            }
        }
        i = n;
    }
    return i;
}
 
int main()
{
    scanf("%s", str);
    int i, j;
    len = strlen(str);
    for (i = 0; i < len; ++i)
    {
        i = isString(str, i);
    }
    for (j = 0; j < t; ++j)
    {
        putchar(str1[j]);
    }
    putchar('\n');
    return 0;
}


========================================Talk is cheap, show me the code=======================================