题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=117538#problem/C
题目大意:给出一个字符串,然后给出一系列的x,y;把字符串中的x与y字母交换
分析:把26个字母中间的x,y交换,在输出的后做处理即可;
如果直接循环在字符串中进行交换,中间有案例会超时。
#include<iostream> #include<cstdio> using namespace std; int main(){ int m,n; char a[200005],x,y; int b[27]; scanf("%d%d%s",&m,&n,a); for(int i=0; i<26; i++) b[i] = i; while(n--) { cin>>x>>y; for(int i=0;i<26;i++) { if(b[i]==x-'a') b[i]=y-'a'; else if(b[i]==y-'a') b[i]=x-'a'; } } for(int i=0; i<m; i++) printf("%c", b[a[i]-'a']+'a'); printf(" "); return 0; }