题意:给你一个字符串和字符转换规则,问你装换后的字符串的样子。
解题思路:vector 模拟映射
解题代码:
1 // File Name: a.cpp 2 // Author: darkdream 3 // Created Time: 2015年04月04日 星期六 13时39分13秒 4 5 #include<vector> 6 #include<list> 7 #include<map> 8 #include<set> 9 #include<deque> 10 #include<stack> 11 #include<bitset> 12 #include<algorithm> 13 #include<functional> 14 #include<numeric> 15 #include<utility> 16 #include<sstream> 17 #include<iostream> 18 #include<iomanip> 19 #include<cstdio> 20 #include<cmath> 21 #include<cstdlib> 22 #include<cstring> 23 #include<ctime> 24 #define LL long long 25 26 using namespace std; 27 int t; 28 int fa[1000]; 29 vector<int> mp[300]; 30 char str[1000005]; 31 char str1[10]; 32 char str2[10]; 33 int main(){ 34 scanf("%d",&t); 35 while(t--) 36 { 37 scanf("%s",str); 38 int len = strlen(str); 39 for(int i = 1;i <= 299;i ++) 40 mp[i].push_back(i); 41 int q; 42 scanf("%d",&q); 43 for(int i = 1;i <= q;i ++) 44 { 45 scanf("%s %s",str1,str2); 46 int ta = str1[0]; 47 int tb = str2[0]; 48 for(int i = 0 ;i < mp[tb].size();i ++) 49 mp[ta].push_back(mp[tb][i]); 50 mp[tb].clear(); 51 } 52 //printf("*** "); 53 for(int i = 1;i <=299 ;i ++) 54 { 55 for(int j = 0 ;j < mp[i].size() ;j ++) 56 { 57 fa[mp[i][j]] = i ; 58 } 59 mp[i].clear(); 60 } 61 for(int i = 0 ;i < len ;i ++) 62 { 63 printf("%c",fa[str[i]]); 64 } 65 printf(" "); 66 } 67 68 return 0; 69 }