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; }
方向错了 再怎么想都没用 ~~~~~~