给出一个表达式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=======================================