字符串采用顺序存储结构,设计删除子串的算法代码
时间: 2024-05-12 12:19:17 浏览: 81
字符串处理算法
以下是删除子串的算法代码:
```
#include <stdio.h>
#include <string.h>
void deleteSubstring(char str[], char sub[]) {
int i, j, k;
int len1 = strlen(str);
int len2 = strlen(sub);
for(i = 0; i < len1; i++) {
k = i;
for(j = 0; j < len2 && str[k] == sub[j]; j++, k++);
if(j == len2) {
for(j = i; j < len1 - len2; j++)
str[j] = str[j + len2];
str[j] = '\0';
len1 = strlen(str);
i -= len2;
}
}
}
int main() {
char str[100];
char sub[100];
printf("Enter a string: ");
scanf("%[^\n]", str);
printf("Enter a substring to delete: ");
scanf(" %[^\n]", sub);
deleteSubstring(str, sub);
printf("String after deletion: %s", str);
return 0;
}
```
该算法的思路是遍历字符串,当发现与子串相匹配的子序列时,就将其删除。具体实现过程如下:
1. 遍历字符串,依次比较每个字符和子串的第一个字符是否相等,如果相等则继续比较后续字符,直到发现不相等或子串已经比较完毕。
2. 如果子串比较完毕,则说明找到了一个与子串相匹配的子序列,此时将该子序列从原始字符串中删除。
3. 删除子序列时,将后面的字符依次向前移动,覆盖掉需要删除的子串,最后将字符串末尾设置为'\0'。
4. 在删除子串后,需要重新计算字符串长度,并将下标i减去子串长度,以便继续遍历字符串。
5. 最后输出删除子串后的字符串。
阅读全文