您的位置:首页 > 其它

HUAS_ACM 个人训练#2 C

2016-05-24 17:04 387 查看
题目链接: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("\n");

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: