什么是空间复杂度str.count()?

时间:2018-07-03 01:04:37

标签: python python-3.x python-2.7 space-complexity

使用内置的Python字符串方法inputstring.count(x)的空间复杂度是多少?

例如:import Foundation protocol SimDelegate:class { func change() }

1 个答案:

答案 0 :(得分:2)

str.count的CPython代码在PyUnicode_Count中。在现代版本的Python中,这会根据haystrack字符串的存储方式分派到asciilib_countucs1lib_countucs2lib_countucs4lib_count中的一个,但最终它们全部下降到通用的STRINGLIB(count)代码,该代码只需调用FASTSEARCH

如果您查看最后一个源文件的顶部,则:

/* 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 */

对于单字符的针,基本上只是在做strchr。对于非微小的针,确实暗示要建立一个Boyer-Moore三角表,其中包括一个布隆过滤器和一些与针的大小成线性比例的东西,以及一些其他不变的东西。但是,没有任何东西与干草堆的大小成正比。

因此,您称该常数还是线性常数取决于您将针的尺寸视为输入还是常数。