能够递归搜索文本中的字符串的代码

我有一个满足上述问题的代码。但是,我个人很好奇如何对其进行重新编码,以便如果文本没有空格并且给出为"LoveIsWar",则如果字符串为 ,代码仍将返回 true "War"。


但是,我想逐个字母地检查,但我不确定该怎么做。如果我能得到这方面的指导,我将不胜感激!


def find(text, substring):

    if(len(text) <= 0):

        return None

    elif(text[0] == substring):

        return substring

    else:

        return find(text[1:], substring)



def is_string_there(text, string):

    if find(text.split(), string):

        return True

    else: return False


print(is_string_there("love is war","war"))

print(is_string_there("love is war","warfalse"))


这是满足我想要的一切的编辑代码。即使字符串中包含大写字母,也能够检查文本是否包含空格。


def find(text, substring):

    if(len(text) <= 0):

        return None

    elif(text[0:len(substring)] == substring):

        return substring

    else:

        return find(text[1:], substring)



def is_string_there(text, string):

    if find(text.lower(), string.lower()):

        return True

    else: return False


print(is_string_there("love is war","war"))

print(is_string_there("love is war","warfalse"))


交互式爱情
浏览 124回答 4
4回答

眼眸繁星

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

慕尼黑5688855

我不确定我是否遗漏了什么,但你为什么不使用in关键字?>>>"War" in "Love is War"true>>>"War" in "LoveIsWar"true>>>"Warfalse" in "Love is War"false

慕斯709654

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

蝴蝶不菲

您可以直接使用in来确定给定字符串中是否存在子字符串。像这样的东西:myString1 = "Love Is War"myString2 = "LoveIsWar"print("War" in myString1)print("War" in myString2)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python