HUAS_ACM 个人训练#2 C

   题目链接: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;
}
原文地址:https://www.cnblogs.com/fenhong/p/5524084.html