编写一个函数,要求不用字符串函数实现子串的搜索,若找到子串则返回子串在主串的开始位置
时间: 2024-09-29 09:13:02 浏览: 44
当需要编写一个不使用内置字符串函数实现子串搜索的函数时,可以采用滑动窗口(rolling window)算法,遍历主串数组,逐个字符对比查找目标子串。下面是一个简单的Python示例,这个函数`find_substring`接收两个参数:主串`str_main`和子串`substr`:
```python
def find_substring(str_main, substr):
if not substr: # 如果子串为空,则直接返回0
return 0
len_main = len(str_main)
len_substr = len(substr)
# 初始化左指针和右指针
left = 0
right = 0
while right < len_main: # 当右指针还在主串范围内
if str_main[right] == substr[left]: # 如果当前字符匹配
left += 1 # 左指针向右移动
if left == len_substr: # 子串完全匹配,返回起始位置
return left - 1 # 减一是因为索引从0开始计数
else: # 不匹配时,将左指针移到下一个位置,并更新右指针
left = 0
right += 1
# 没有找到子串,返回-1
return -1
# 测试函数
main_str = "Hello, world!"
substr = "world"
position = find_substring(main_str, substr)
print(f"子串'{substr}'在主串中开始位置为:{position}")
阅读全文