输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。
输入格式:
输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。
输出格式:
在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。
输入样例:
Tomcat is a male ccatat
cat
输出样例:
Tom is a male
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <stdio.h>
#include <string.h>
#define n 82
int main(int argc, char *argv[])
{
char s1[n],s2[n];
int i,j,flag,len1,len2;
fgets(s1,n,stdin);
len1=strlen(s1);
len1-=1;
s1[len1]='\0';
fgets(s2,n,stdin);
len2=strlen(s2);
len2-=1;
s2[len2]='\0';
for(i=0;i<len1;i++){ //遍历s1
if(s1[i]==s2[len2-1]){
flag=1;
for(j=0;j<len2;j++){
if(i-(len2-1)<0 || s1[i-(len2-1)+j]!=s2[j]){
flag=0;
break;
}
}
if(flag==1){
for(j=(i-(len2-1));j+len2<len1;j++){ //调试1:j=i,错误。
s1[j]=s1[j+len2];
}
len1-=len2;
i-=len2; //调试2:i-=1,错误。
}
}
}
for(i=0;i<len1;i++){
printf("%c",s1[i]);
}
return 0;
}