Description
给定一个字符串,其长度为n。接下来对这个字符串进行m次操作,每次操作都有两个字符x和y,请将该字符串中的x字符换为y字符,
将该字符串中的y字符换为x字符。请你输出m次操作后的字符串。
Input
输入第一行为一个n和m。第二行为字符串。接下来有m行,每行有两个字符。
(1<=n,m<=200000,所有字符都为小写字母)
Output
输出m次操作后的字符串
Sample Input 1
3 4 abc a a b a c a a c
Sample Output 1
bac
/*
头晕啊
知识点:模拟加思维
*/
#include<bits/stdc++.h>
using namespace std;
const int N = 200000+10;
char ss[N], parent[26];
int main(){
int n, m;
char x[2], y[2];
scanf("%d%d", &n, &m);
scanf("%s", ss);
for(int i=0; i<26; ++i)parent[i]='a'+i;
for(int i=0; i<m; ++i){
scanf("%s%s", x, y);
for(int i=0; i<26; ++i){
if(x[0] == y[0])break;
if(parent[i] == x[0]){
parent[i] = y[0];
continue;
}
if(parent[i] == y[0]){
parent[i] = x[0];
continue;
}
}
}
for(int i=0; i<n; ++i)printf("%c", parent[ss[i]-'a']);
printf("
");
return 0;
}
方向错了 再怎么想都没用 ~~~~~~