此题又有字符匹配匹配的问题,又想到了用string类里的find函数,想想还是用“暴力”解决吧,锻炼一下自己的能力,轻松AC了。
AC代码如下:
#include<stdio.h>
#include<string.h>
char sfind[20][100],srep[20][100],text[500];
int main()
{
int n;
while(scanf("%d",&n)!=EOF){
getchar();
if(!n) break;
for(int i=0;i<n;i++){
gets(sfind[i]);
gets(srep[i]);
}
gets(text);
for(int i=0;i<n;i++){
int lef=strlen(sfind[i]),ler=strlen(srep[i]),lex=strlen(text);
int mb=lef>ler?lef-ler:ler-lef;
for(int j=0;j<lex;j++){
int p=1;
for(int k=j,x=0;x<lef;k++,x++){
if(sfind[i][x]!=text[k]){
p=0; break;
}
}
if(p){
if(ler>=lef){
for(int k=lex;k>=j+lef;k--)
text[k+mb]=text[k];
for(int k=j,x=0;x<ler;k++,x++)
text[k]=srep[i][x];
}
else{
for(int k=j+lef;k<=lex;k++)
text[k-mb]=text[k];
for(int k=j,x=0;x<ler;k++,x++)
text[k]=srep[i][x];
}
j=-1;
lex=strlen(text);//注意:替换后需重新计算text的长度
}
}
}
printf("%s\n",text);
memset(text,0,sizeof(text));//注意:每个Case结束后需将text数组清零,不然下一个Case里的text会保留有上一个Case里的text的一些字符(长度不等时)
}
return 0;
}
--------------------------------------------------------------------------------------------
Keep It Simple,Stupid!
--------------------------------------------------------------------------------------------

本文介绍了一种使用简单暴力方法实现的字符串替换算法,该算法通过逐字符对比完成目标字符串的查找并进行替换,适用于字符匹配问题。
9894

被折叠的 条评论
为什么被折叠?



