代码:(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