ABC342c
按照题意模拟即可,需要存储一个字母和字母之间的映射,注意每次都要更新所有mp[_] == c的映射,不然a----b---c,就会变成b---c而不是a----c。
#include<iostream>
#include<unordered_map>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int n;
string s;
cin >> n >> s;
// 初始化映射表:每个字符初始映射自己
unordered_map<char, char> mp;
for (char c = 'a'; c <= 'z'; ++c)
mp[c] = c;
int q;
cin >> q;
while (q--) {
char old_c, new_c;
cin >> old_c >> new_c;
// 更新所有指向old_c的映射
for (auto& [k, v] : mp)
if (v == old_c)
v = new_c;
}
for (char& c : s)
c = mp[c];
cout << s << endl;
return 0;
}

浙公网安备 33010602011771号