目标: 所以我的目标是编写一个递归函数,在给定两个字符串后,返回第一个字符串是否为 第二个的子序列。 例如 给定hac和cathartic,您应该返回true,但给定bat 和表,则应返回false
我试图编写一个代码来检查一个字符串是否是另一个字符串的子字符串。 这是我的密码:
def is_subsequent(str1, str2):
x = 0
if (all(i in str2 for i in str1)):
x = 1
if (x):
return True
else:
return False
但它不关心字符串的顺序。我想写一段代码,考虑目标中提到的顺序。并使用递归求解它
递归背后的基本思想是函数做两件不同的事情:
对于此问题,您有两种基本情况:
True
李>False
李>然后,有两种方法可以使问题变得更容易(即,使一个或两个字符串变小):
ac
是artic
的子序列c
是rtic
的子序列。)hac
是cathartic
的子序列,hac
是athartic
的子序列。)这是一个帮助函数,它处理一些简单的情况,比如子序列为空,总是返回true,或者子序列大于另一个字符串,或者另一个字符串为空,而子序列不为空,总是返回false
此函数在这里同时使用字符串和两个指针,这两个指针始终指示您当前在两个字符串中比较的位置,或者您可以使用两个子字符串并始终比较它们的第一个字符
如果任何一个指针到达的索引不再在字符串的范围内,则是时候进行计算了。如果i指针已到达终点,则返回true,否则返回false
此函数检查搜索字符串是否至少与文本字符串一样长。
如果是,请依次检查搜索字符串的每个字符,查看其是否与文本字符串匹配。
如果字符不匹配,请再次尝试该函数,但从文本中较远的1个位置开始
相关问题 更多 >
编程相关推荐