题意:一个字符串,做n次变换,每次变换是把a字符与b字符全部调换。求全部调换完成后的字符串。
这道题目我一开始理解错意思了,理解成将所有a字符变成b字符,我觉得这样出貌似还更有挑战性一点。。口亨
#include<cstdio> #include<cstring> #include<map> #include<iostream> using namespace std; #define MAX(x,y) (((x)>(y)) ? (x) : (y)) #define MIN(x,y) (((x) < (y)) ? (x) : (y)) #define ABS(x) ((x)>0?(x):-(x)) const int inf = 0x7fffffff; char src[200000]; map <char,char> p; int main() { for(char i='a'; i<=122; i++){ p[i]=i; } char left,right; int n, m; cin>>n>>m; cin>>src; getchar(); char x,y; for(int j=0;j<m;j++){ scanf("%c %c",&left,&right); getchar(); for(char i='a'; i<=122; i++){ if(p[i]==left) x=i; //找到目前是left的 if(p[i]==right) y=i; //找到目前是right的 } p[x]=right; p[y]=left; } for(int i=0; src[i]; i++){ cout<<p[ src[i] ]; } // for(char i='a'; i<=122; i++){ // cout<<p[i]; // } return 0; }