我处理一些字符串搜索任务只是为了提高搜索的效率。 我正在尝试实现一种方法,通过使用向后搜索来计算给定字符串集中有多少子字符串。 例如,给定以下字符串:
original = 'panamabananas$'
s = smnpbnnaaaaa$a
s1 = $aaaaaabmnnnps #sorted version of s
我试图找出子字符串“ban”出现了多少次。为此,我考虑用zip function
遍历两个字符串。在向后搜索中,我应该首先在s1
中查找ban
(n
)的最后一个字符,并查看它与s
中的下一个字符a
的匹配位置。它在索引9、10和11中匹配,它们实际上是s
中的第三、第四和第五个a。下一个要查找的字符是b
,但只查找之前发生的匹配(这意味着s1
中的n
与s
中的a
匹配)。因此,我们从s
中选取这些a
(第三、第四和第五个),看看s1
中的第三、第四或第五个a
是否与s中的任何b
匹配。这样我们就发现了“ban”的出现。你知道吗
对我来说,迭代和保存cuasi事件似乎很复杂,所以我尝试的是这样的:
n = 0 #counter of occurences
for i, j in zip(s1, s):
if i == 'n' and j == 'a': # this should save the match
if i[3:6] == 'a' and any(j[3:6] == 'b'):
n += 1
我认为嵌套if语句可能是需要的,但我仍然是一个初学者。因为我得到了0次,而原来只有一次。你知道吗
可以使用
find
运行循环来计算子字符串的出现次数。你知道吗如果您真的想要向后搜索,那么反转字符串和子字符串并执行相同的机制。你知道吗
相关问题 更多 >
编程相关推荐