不知道怎么T的
查看原帖
不知道怎么T的
549131
Eous楼主2024/4/21 21:29
#include<bits/stdc++.h>
using namespace std;
string s;
int l,idx;
char change(char x)
{
	if('a'<=x&&x<='z')
		return x-'a'+'A';
	else if('A'<=x&&x<='Z')
		return x-'A'+'a';
	return x;
}
pair<string,int> solve(int l)
{
	string ret;
	int tmp=0,pos;
	for(int i=l;;i++)
	{
		if(s[i]=='(')
		{
			tmp++;
			if(i!=l)
			{
				tmp--;
				pair<string,int> x=solve(i);
				ret=ret+x.first;
				i=x.second;
			}
		}
		else if(s[i]==')')
			tmp--;
		else
			ret=ret+s[i];
		if(tmp==0)
		{
			pos=i;
			break;
		}
	}
	int tl=ret.length();
	for(int i=0,j=tl-1;i<j;i++,j--)
	{
		swap(ret[i],ret[j]);
		ret[i]=change(ret[i]);
		ret[j]=change(ret[j]);
	}
	if(tl&1)
		ret[tl>>1]=change(ret[tl>>1]);
	return make_pair(ret,pos);
}
signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>s;
	l=s.length();
	for(int i=0;i<l;i++)
	{
		if(s[i]=='(')
		{
			pair<string,int> x=solve(i);
			cout<<x.first;
			i=x.second;
		}
		else if(s[i]!=')')
			cout<<s[i];
	}
	return 0;
}
2024/4/21 21:29
加载中...