Many Replacement

正常思路就是暴力遍历,但是这样容易超时,所以就要优化代码。很容易想到,每种相同字母最终都会替换成一种字母,所以只要把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;
}`

学习总结:暴力是一种不错的想法,但不是万能的,有时候解题需要换一种思路来优化代码。

posted @ 2025-01-22 21:06  十柒*  阅读(4)  评论(0编辑  收藏  举报