编写算法,从串s中删除所有和串t相同的子串。(用C语言)
时间: 2024-12-15 07:28:27 浏览: 61
在C语言中,编写一个算法来删除字符串s中所有与字符串t相同的子串,可以采用滑动窗口的思想结合循环来实现。以下是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
void removeSubstrings(char *s, char *t) {
int n = strlen(s);
int m = strlen(t);
for (int i = 0; i <= n - m; ) {
if (strcmp(s + i, t) == 0) {
// 从i开始到i+m-1是匹配的子串
memmove(s + i, s + i + m, n - i - m); // 移动剩余部分到原位置
n -= m;
} else {
i++;
}
}
s[n] = '\0'; // 如果还有剩余字符,添加空字符终止字符串
}
int main() {
char s[] = "banana";
char t[] = "ana";
printf("Original string s: %s\n", s);
removeSubstrings(s, t);
printf("String after removing occurrences of '%s': %s\n", t, s);
return 0;
}
```
在这个例子中,函数`removeSubstrings`遍历`s`,每次检查一个长度为`t`的子串是否与`t`相等。如果相等,则跳过这个子串,并将之后的部分向前移动;如果不相等,则继续下一个子串的比较。
阅读全文
相关推荐


















