我有问题的特殊情况,但是很高兴知道是否有可能使用任何功能。
所以我想在字符串中找到子字符串的位置。好的,在python中有一个find方法可以完全满足需要。
string.find(s,sub [,start [,end]])
返回s中找到子字符串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 */
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句