一尘不染

确定一个序列是否在另一个序列中的最佳方法?

algorithm

这是将“字符串包含子字符串”问题推广到(更多)任意类型的问题。

给定一个序列(例如列表或元组),确定另一个序列是否在其中的最佳方法是什么?另外,它应该返回子序列开始处的元素的索引:

用法示例(序列顺序):

>>> seq_in_seq([5,6],  [4,'a',3,5,6])
3
>>> seq_in_seq([5,7],  [4,'a',3,5,6])
-1 # or None, or whatever

到目前为止,我只是依靠蛮力,它看起来缓慢,丑陋且笨拙。


阅读 233

收藏
2020-07-28

共1个答案

一尘不染

它找到给定序列中的 所有 正确子序列,并应用作迭代器:

>>> for s in KnuthMorrisPratt([4,'a',3,5,6], [5,6]): print s
3
>>> for s in KnuthMorrisPratt([4,'a',3,5,6], [5,7]): print s
(nothing)
2020-07-28