【求助】WA了四个点,关于输出中出现了数字的问题
查看原帖
【求助】WA了四个点,关于输出中出现了数字的问题
258638
core_exe楼主2020/8/9 16:00

代码:(C++11)

#include<iostream>
#include<vector>
#include<string>
#include<stack>

using namespace std;

string span(string input)
{
    int layer = 0;
    int left_pos = 0;
    string output;
    for (int i = 0; i < input.length(); i++)
    {
        if (layer == 0 && input[i] != '[' && input[i] != ']')
        {
            output.push_back(input[i]);
        }
        if (input[i] == '[')
        {
            layer++;
            left_pos = (layer == 1 ? i : left_pos);
        }
        if (input[i] == ']')
        {
            layer--;
            if (layer == 0)
            {
                int dup = 0, delta = 1;
                dup += input[left_pos + 1] - '0';
                if (input[left_pos + 2] >= '0' && input[left_pos + 2] <= '9')
                    dup = dup * 10 + input[left_pos + 2] - '0', delta = 2;
                string out = span(input.substr(left_pos + 1 + delta, i));
                for (int j = 0; j < dup; j++)
                {
                    output += out;
                }
            }
        }
    }
    return output;
}

int main()
{
    string input;
    cin >> input;
    cout << span(input) << endl;
    return 0;
}

在#3,#7,#8,#10这四个点中输出了数字导致了WA,在其他的点上面正确。查了有关数字的判定的问题,感觉写的没有什么问题,希望有大佬来指点一下代码的BUG出在哪里。感谢QAQ

2020/8/9 16:00
加载中...