70求调qaq
查看原帖
70求调qaq
712102
Kikuchiyo楼主2024/11/9 19:45
#include <iostream>
#include <string>
const long long N = 114514;
using namespace std;
string operate(string str)
{	
	bool hasoperate = false,hastwonum = false;
	string str1,str2,str3;
	int a = 0;
	int len = str.size();
	for(int i=0;i<len;i++)
	{	
		if(str[i] == '['&& str[i+1] > '0' && str[i+1] <= '9')
		{	
			hasoperate = true;
			if(str[i+2] >= '0' && str[i+2] <= '9')
			{
				i++;
				hastwonum = true;
			}
			for(int j=i+2;j<len-1;j++)
			{
				str2+=str[j];
				if(j+2<len)
				{
					if(str[j+1] == ']'&&str[j+2] != ']')				
					{
						a = j+2;
						for(a;a<len;a++)
							str3+=str[a];
						break;
					}					
				}
				if(str[j+1] == ']'&&j+1 == len-1)
				{
					break;
				}
			}
			if(hastwonum)
			{
				for(int j=0;j<(str[i] - '0')*10+(str[i+1] - '0');j++)
					str1+=str2;
			}
			else
			for(int j=0;j<str[i+1] - '0';j++)
					str1+=str2;			
		}
		if(hasoperate) break;			
		str1 += str[i];
	}
	str1 += str3;
	if(!hasoperate) return str1;
	else return operate(str1);
}
int main()
{
	string str;
	cin >> str;
	cout << operate(str);
}
2024/11/9 19:45
加载中...