输入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>
int main ()
{
char s1[81], s2[81];
gets(s1);
gets(s2);
int i = 0, j = 0, count = 0;
while (s1[i] != NULL){
\\依次判断
if (s2[count]==NULL && count>0) {
\\当字符串s1中存在s2时
j = i - count;
while (s1[i] != NULL) {
s1[j++] = s1[i++];
\\除去s2字符串,再将s1后面的的值前移
}
s1[j] = NULL;
\\数组重新赋值要记得加\0
i = 0;
\\找到一组后再重新判断
count = 0;
continue;
}
if (s1[i] == s2[count]) {
count ++;
} else if (s1[i] == s2[0]) {
count = 1;
\\因为有i++所以要注意当s1首元素就与s2相同的特殊情况
} else {
count = 0;
}
i++;
}
if (s2[count]==NULL && count>0) {
s1[i-count] = NULL;
\\要删除的字符串在s1末尾,此时已退出循环,所以需要再循环外再判断一遍
}
puts(s1);
return 0;