Sal*_*ali 6 python algorithm time-complexity
我有问题的特殊情况,但是知道是否可以使用任何函数会很好.
所以我想在字符串中找到子字符串的位置.好的,在python中有一个find方法可以完全满足需要.
string.find(s,sub [,start [,end]])
返回s中找到substring sub的最低索引,使sub完全包含在s [start:end]中.失败时返回-1.开始和结束的默认值以及负值的解释与切片的默认值相同.
惊人的,但问题是,在一个大的字符串找到一个大子可以从运行O(n*m)到O(n)(这是一个巨大的交易)取决于算法.文档不提供有关时间复杂度的信息,也不提供有关基础算法的信息.
我看到如何解决这个问题的方法很少:
两者听起来都不容易(我希望有一种更简单的方法).那么如何才能找到内置函数的复杂性?
您说,“转到源代码并尝试理解它”,但这可能比您想象的要容易。一旦你看到实际的实现代码,在Objects/stringlib/fastsearch.h 中,你会发现:
/* fast search/count implementation, based on a mix between boyer-
moore and horspool, with a few more bells and whistles on the top.
for some more background, see: http://effbot.org/zone/stringlib.htm */
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
862 次 |
| 最近记录: |