求助求助 #7 #9 MLE
  • 板块P1928 外星密码
  • 楼主BDCYI
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/17 16:39
  • 上次更新2024/10/17 19:18:13
查看原帖
求助求助 #7 #9 MLE
976912
BDCYI楼主2024/10/17 16:39
#include<bits/stdc++.h>
using namespace std;
string solve(string s)
{
	int a, b;
	a = s.find_last_of('[');
	b = s.find_first_of(']');
	if (a == string::npos)
	{
		return s;
	}
	string sp;
	if (!isupper(s[a + 2]))
	{
		for (int i = 1; i <= stoi(s.substr(a + 1, 2)); i++)
			sp  += s.substr(a + 3, b - a - 3);
	}
	else
	{
		for (int i = 1; i <= s[a + 1] - '0'; i++)
			sp += s.substr(a + 2, b - a - 2);
	}
	return solve(s.substr(0, a) + sp + s.substr(b + 1));
}
int main()
{
	string s;
	cin >> s;
	int i = 0, j = s.size() - 1;
	int t1, t2;
	while (true)
	{
		t1 = s.find(']', i);
		if (t1 == string::npos)
			break;
		t2 = s.find('[', t1);
		if (t2 == string::npos)
			break;
		int k = t1 + 1;
		for (; k < t2; k++)
		{
			if (!isupper(s[k]))
			{
				i = k;
				break;
			}
		}
		if (k == t2)
		{
			s = solve(s.substr(0, t1 + 1)) + s.substr(t1 + 1);
		}
	}
	cout << solve(s);
}
2024/10/17 16:39
加载中...