RE球跳
查看原帖
RE球跳
752953
sLMxf楼主2024/10/8 13:56

rt

#include<bits/stdc++.h>
#define int long long
using namespace std;
string fz(string s)
{
	string cnt;
	for(int i=0;i<(int)s.size();i++) cnt=cnt+s[s.size()-i-1];
	return cnt;
}
map<int,int>dy;
string dfs(string s,int l,int r)
{
	string answer1=" ";answer1[0]=s[l];
	string answer2=" ";answer2[0]=s[l+1];
	string answer3="";
	if(l==r) return answer1;
	if(r-l==2&&s[l]=='(') return answer2;
	if(r-l==1&&s[l]=='(') return answer3;
	string ans="",cnt="";
	int khnum=0;
	for(int i=l;i<=r;i++)
	{
		if(s[i]=='(')
		{
			ans+=dfs(s,i+1,dy[i]-1);
			i=dy[i];
		}
		else
			ans=ans+s[i];
	}
	cnt=fz(ans);
	return cnt;
}
signed main()
{
	string s;
	cin>>s;
	int n=s.size(),k=0;s=" "+s;
	stack<int> st;
	for(int i=1;i<=n;i++)//转大小写
	{
		if(s[i]=='(')
		{
			st.push(i);
            k++;
		}
		else if(s[i]==')')
		{
			dy[st.top()]=i;
			st.pop();
            k--;
		}
		else
		{
			if(k%2)
			{
				if('a'<=s[i]&&s[i]<='z')
					s[i]+='A'-'a';
				else if('A'<=s[i]&&s[i]<='Z')
					s[i]+='a'-'A'; 
			}
		}
	}
	cout<<fz(dfs(s,1,n));
	return 0;
}
2024/10/8 13:56
加载中...