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;
}
posted @ 2025-04-07 15:49  啦啦啦456123  阅读(19)  评论(0)    收藏  举报