解题思路: 直接用string的函数模拟
#include <bits/stdc++.h>
#define x first
#define y second
#define mem(h) memset(h,-1,sizeof h)
#define mcp(a,b) memcpy(a,b,sizeof b)
using namespace std;
typedef long long LL;
typedef unsigned long long ull;
typedef pair< int , int > PII;
typedef pair< double , double > PDD;
namespace IO{
inline LL read ( ) {
LL o= 0 , f= 1 ; char c= getchar ( ) ;
while ( c< '0' || c> '9' ) { if ( c== '-' ) f= - 1 ; c= getchar ( ) ; }
while ( c>= '0' && c<= '9' ) { o= o* 10 + c- '0' ; c= getchar ( ) ; }
return o* f;
}
} using namespace IO;
const int N= 1e2 + 7 , M= 2e5 + 7 , INF= 0x3f3f3f3f , mod= 1e8 + 7 , P= 131 ;
string A, B, desk, now;
int main ( ) {
cin>> A>> B;
int p= 0 ;
int cnt= 0 ;
while ( A. size ( ) && B. size ( ) && cnt< 1e4 ) {
if ( ! p) now= A. substr ( 0 , 1 ) , A. erase ( A. begin ( ) ) ;
else now= B. substr ( 0 , 1 ) , B. erase ( B. begin ( ) ) ;
if ( desk. find ( now) == - 1 ) {
desk+ = now;
p^ = 1 ;
} else {
int pos= desk. find ( now) ;
string s= desk. substr ( pos) ;
desk. erase ( desk. begin ( ) + pos, desk. end ( ) ) ;
s+ = now;
reverse ( s. begin ( ) , s. end ( ) ) ;
if ( ! p) A+ = s;
else B+ = s;
}
cnt++ ;
}
if ( cnt> 1e4 ) cout<< - 1 << endl;
else if ( A. size ( ) ) cout<< A<< endl;
else if ( B. size ( ) ) cout<< B<< endl;
return 0 ;
}