4 回答

TA贡献1873条经验 获得超9个赞
好问题。给定递归函数的约束,用外行的话来说,您想要实现的是对字符串的滑动窗口搜索。
也就是说,当您将“文本”传递给 find 函数时,您不会将其作为数组传递,而是传递文本本身。
然后,“查找”函数不会遍历“数组”中的元素,而是遍历字符串中的字母,将它们一一丢弃。因此,您的“窗口” - 或您在字符串上的视图,会滑过它,直到您完成。
您真正需要修改的是:
text[0] == substring
应该检查是否text[0:length_of_substring]
匹配子字符串。请记住,我们对字符串的操作与对数组的操作非常相似!
如果没有,移动 1 个字符(就像您在基于数组的搜索中所做的那样)。
为了您的兴趣,可以使用Rabin Karp等算法非常有效地解决这些问题
当您的“文本”中剩余的字符少于子字符串中的字符时,您可以进行的一个小优化是中断搜索。
希望有帮助!

TA贡献1848条经验 获得超2个赞
我不确定我是否遗漏了什么,但你为什么不使用in关键字?
>>>"War" in "Love is War"
true
>>>"War" in "LoveIsWar"
true
>>>"Warfalse" in "Love is War"
false

TA贡献1840条经验 获得超5个赞
你知道你可以使用in操作符检查 python 中的子字符串吗?
if "war".lower() in "LoveIsWar".lower():
return True
lower 用于匹配不区分大小写
如果你确实需要它是一个递归函数,我建议你看看这个:https ://www.geeksforgeeks.org/recursive-function-to-do-substring-search/

TA贡献1810条经验 获得超4个赞
您可以直接使用in来确定给定字符串中是否存在子字符串。
像这样的东西:
myString1 = "Love Is War"
myString2 = "LoveIsWar"
print("War" in myString1)
print("War" in myString2)
添加回答
举报