2.用户输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。请在函数deletestr中补充缺失的代码。(提示:计算子串的位置可以使用strstr函数)
时间: 2024-12-19 13:15:27 浏览: 6
为了实现这个功能,你可以编写一个名为`deletestr`的函数,它接受两个字符串`S1`和`S2`作为输入,并返回一个新的字符串,其中已删除所有子串`S2`。这里是一个简单的Python实现,使用了内置的`str.replace()`方法:
```python
def deletestr(S1, S2):
while S2 in S1:
S1 = S1.replace(S2, '')
return S1
# 示例
input_str1 = "hello world"
substring_to_remove = "world"
output_str = deletestr(input_str1, substring_to_remove)
print(f"原字符串: {input_str1}\n新字符串: {output_str}")
```
如果要用C语言并结合`strstr`函数,可以这样做:
```c
#include <stdio.h>
#include <string.h>
char* deletestr(char *s1, char *s2) {
while (strstr(s1, s2) != NULL) {
char* pos = strstr(s1, s2);
s1[pos] = '\0'; // 将子串替换为空字符,达到删除的效果
s1++; // 移动指针到下一个位置继续查找
}
return s1;
}
int main() {
char input_str1[] = "hello world";
char substring_to_remove[] = "world";
input_str1 = deletestr(input_str1, substring_to_remove);
printf("原字符串: %s\n新字符串: %s", input_str1, input_str1);
return 0;
}
```
注意,C语言版本的代码假设输入字符串`S1`是在栈上分配的内存空间,因此直接修改不会导致额外的空间开销。如果`S1`是动态分配的,则需要考虑字符串结束符的问题。
阅读全文