给出一个表达式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(' '); return 0; }
========================================Talk is cheap, show me the code=======================================