#include <stdio.h>
#include <string.h>
int main()
{
char s1[81];//80的时候最长字符串会报错运行超时 ,遂改为81,应该是最后一位\0的问题
char s2[81];
char*p;
int len;
scanf("%[^\n]",s1);
getchar();//丢弃上一个换行符,避免影响下一输入
scanf("%[^\n]",s2);
len=strlen(s2);//得到s2的长度
while(p = strstr(s1,s2)){ //strstr返回相同字符处的指针,没找到返回null作为布尔0
for(int i=0;*(p+i);i++) //p+i为重复部分往后的s1字符,直到\0(作为布尔0)为止
*(p+i) = *(p+len+i);//将重复即s2部分长的s1字符往前覆盖重复部分
}
printf("%s",s1);
return 0;
}
先上码
题干:
输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。
输入格式:
输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。
输出格式:
在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。