要编写一个函数来查找较大字符串中的子字符串的位置,而不使用'find'函数,可以使用字符串匹配算法,例如暴力匹配算法、KMP算法、Boyer-Moore算法等。
代码示例:
def find_substring(main_str, sub_str):
m = len(main_str)
n = len(sub_str)
for i in range(m - n + 1):
j = 0
while j < n:
if main_str[i + j] != sub_str[j]:
break
j += 1
if j == n:
return i
return -1
代码示例:
def build_next(sub_str):
n = len(sub_str)
next = [0] * n
i = 1
j = 0
while i < n:
if sub_str[i] == sub_str[j]:
j += 1
next[i] = j
i += 1
elif j > 0:
j = next[j - 1]
else:
next[i] = 0
i += 1
return next
def find_substring(main_str, sub_str):
m = len(main_str)
n = len(sub_str)
next = build_next(sub_str)
i = 0
j = 0
while i < m:
if main_str[i] == sub_str[j]:
i += 1
j += 1
if j == n:
return i - j
elif j > 0:
j = next[j - 1]
else:
i += 1
return -1
以上是两种常用的字符串匹配算法,可以根据实际需求选择合适的算法来编写查找子字符串的函数。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云