zoukankan      html  css  js  c++  java
  • 字符串表达式展开(比如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
  • 相关阅读:
    mysql数据库查询库中所有表所占空间大小
    mysql行转列
    mysql重置密码
    POJ1426 Find The Multiple —— BFS
    POJ3279 Fliptile —— 状态压缩 + 模拟
    POJ1077 Eight —— IDA*算法
    POJ1077 Eight —— A*算法
    POJ1077 Eight —— 双向BFS
    POJ1077 Eight —— 反向BFS
    POJ1077 Eight —— 正向BFS
  • 原文地址:https://www.cnblogs.com/lcy0515/p/9179759.html
Copyright © 2011-2022 走看看