题解
2023-08-25 14:09:45
发布于:广东
4阅读
0回复
0点赞
#include<bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f
#define pb push_back
#define rep(i,a,b) for(int i=a;i<b;i++)
#define rep1(i,b,a) for(int i=b;i>=a;i--)
using namespace std;
const int N=1e5+100;
ll arr[4][4];
int main()
{
string str1;
string str2;
cin>>str1>>str2;
queue<char>q1;
queue<char>q2;
stack<char>st;
rep(i,0,str1.size())
q1.push(str1[i]);
rep(i,0,str2.size())
q2.push(str2[i]);
map<char,int>mp1;
int pp=1;
int cnt=0;
while(cnt<1e3)
{
cnt++;
if(pp&&q1.empty())
break;
if(!pp&&q2.empty())
break;
if(pp)
{
char a=q1.front();
//cout<<1<<' '<<a<<endl;
q1.pop();
if(mp1[a])
{
//cout<<"1win"<<endl;
q1.push(a);
while(1)
{
char s=st.top();
st.pop();
mp1[s]--;
q1.push(s);
if(s==a)
break;
}
pp=!pp;
}
else
st.push(a),mp1[a]++;
if(q1.empty())
break;
}
else
{
char a=q2.front();
//cout<<2<<' '<<a<<endl;
q2.pop();
if(mp1[a])
{
q2.push(a);
//cout<<"2win"<<endl;
while(1)
{
char s=st.top();
st.pop();
mp1[s]--;
q2.push(s);
if(s==a)
break;
}
pp=!pp;
}
else
st.push(a),mp1[a]++;
if(q2.empty())
break;
}
pp=!pp;
}
if(cnt==1e3)
{cout<<-1<<endl;return 0;}
if(q1.empty())
{
while(!q2.empty())
{
cout<<q2.front();
q2.pop();
}
}
else if(q2.empty())
{
while(!q1.empty())
{
cout<<q1.front();
q1.pop();
}
}
cout<<endl;
return 0;
}
这里空空如也
有帮助,赞一个