利用串的基本运算,编写一个算法删除串S1中所有的S2子串。 要求如下: 1、示例:S1='abcabc',S2=‘ab’,执行后S1=‘cc’ 2、S2不能是空串 3、若S2不是S1的子串,需提示错误信息
时间: 2024-10-10 21:13:09 浏览: 45
要解决这个问题,我们可以使用双指针技术,一种常见的字符串处理方法。以下是Python的一种实现思路:
```python
def delete_substring(S1, S2):
if len(S2) == 0:
return "Error: S2 cannot be an empty string."
i = 0 # 主指针,遍历S1
j = 0 # 辅助指针,用于查找S2
while i < len(S1):
if S1[i:i+len(S2)] == S2: # 如果找到S2子串
S1 = S1[:i] + S1[i+len(S2):] # 移除子串
i -= 1 # 因为移除了字符,需要回退主指针的位置
else:
i += 1 # 没有找到,主指针前进
if S2 not in S1:
return S1 # 若S2不是S1的子串,返回结果
else:
return "Error: S2 is a sub-string of S1."
# 示例
S1 = 'abcabc'
S2 = 'ab'
result = delete_substring(S1, S2)
print(f"After deletion, S1 = '{result}'")
```
这个函数首先检查`S2`是否为空。然后通过两个指针`i`和`j`遍历`S1`,每次尝试匹配`S2`。如果找到了,就移除子串并调整指针位置;如果没有找到,则移动主指针。最后,如果`S2`不是`S1`的子串,函数会直接返回处理后的`S1`。
阅读全文