• 字符串表达式展开(比如abc3[a]就为abcaaa,aa3[bc2[d]]e就为aabcddbcddbcdde)


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


    CSDN博客地址:https://blog.csdn.net/qq_34115899
  • 相关阅读:
    word2vec层次化softmax理解
    python动态加载模块,并获取模块中的类与方法(类似反射)
    用Python装饰器给函数自动加上try except
    3D打印第二弹:狗牌
    【高等代数】06
    【高等代数】05
    沙箱-guacamole
    关于写博客的一点思考
    二阶段目标检测总结
    Waymo object detect 2D解决方案论文拓展
  • 原文地址:https://www.cnblogs.com/lcy0515/p/9179759.html
Copyright © 2020-2023  润新知