@xunuo
2017-01-18T21:31:38.000000Z
字数 811
阅读 1030
Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u
暴力
有一个长度为n的只包含小写字母的字符串s,有m次操作,每次输入2个字符A , B表示将s中的全部字符A变成B,B变成A
第一行整数n,m(1<=n<=200000;1<=m<=200000),第二行一个长度为n的字符串,下来m行每行2个字符A B(A,B是26个小写字母中的任意一个)
经过m次操作后的字符串s
6 1
police
p m
molice
11 6
abacabadaba
a b
b c
a d
e g
f a
b b
cdcbcdcfcdc
完整代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char a[200010],b[200010],c[30];
int main()
{
memset(a,0,sizeof(a));//8到10行可不用
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
c[0]='a';
for(int i=0;i<26;i++)
{
c[i]=c[0]+i;
}
char c1[2],c2[2];
scanf("%s",a);
for(int i=0;i<m;i++)
{
scanf("%s%s",c1,c2);
for(int j=0;j<26;j++)
{
if(c[j]==c1[0])
c[j]=c2[0];
else if(c[j]==c2[0])
c[j]=c1[0];
}
}
for(int i=0;i<n;i++)
b[i]=c[a[i]-'a'];
printf("%s\n",b);
}
return 0;
}