正常思路就是暴力遍历,但是这样容易超时,所以就要优化代码。很容易想到,每种相同字母最终都会替换成一种字母,所以只要把26个字母最后替换成什么字母搞清楚,再用这种替换关系来替换所需字符串就好了。
`#include<stdio.h>
include<stdlib.h>
include<string.h>
int main(){
int n,q;
char s[200007],list[]="abcdefghijklmnopqrstuvwxyz";
scanf("%d",&n);
scanf("%s",&s);
scanf("%d",&q);getchar();
char c,d;
for(int i=0;i<q;i++){
scanf("%c %c",&c,&d);
getchar();
for(int j=0;j<26;j++){
if(list[j]==c){
list[j]=d;
}
}
}
for(int i=0;i<n;i++){
s[i]=list[s[i]-'a'];
}
printf("%s",s);
return 0;
}`
学习总结:暴力是一种不错的想法,但不是万能的,有时候解题需要换一种思路来优化代码。
标签:int,Many,scanf,list,替换成,include,字母,Replacement From: https://www.cnblogs.com/seventeen-/p/18686804