只有s,t对应i位置不同时,才会产生一个距离差,于是想到每次先增大s的距离后增大t的距离,最后判断一下两个距离是否相等即可。
#include <iostream>
#include <string>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#define MAX 100005
#define mod 998244353ll
#define INF 0x3f3f3f3f
#define ll long long
using namespace std;
int main() {
freopen("a.txt", "r", stdin);
freopen("b.txt", "w", stdout);
string s, t, ans;
cin >> s >> t;
bool f = false;
for (int i = 0; s[i]; ++i) {
if (s[i] != t[i]) {
if (!f) ans += s[i];
else ans += t[i];
f ^= 1;
}
else ans += s[i];
}
if (f) ans = "impossible";
cout << ans << endl;
return 0;
}