想问下 KMP 算法的实际应用有哪些?
- 比如说,某某开源框架的某某实现有具体应用到吗?
- 比如说,在你的工作中,有实际使用过 KMP 算法吗?是引用了包,还是自己写了一套实现?是基于什么要考虑使用这个算法,而不是使用别的算法?
Google 了一下相关的,很多都是写怎么实现 KMP 的,搜不动了,特意提个小问题。
想问下 KMP 算法的实际应用有哪些?
Google 了一下相关的,很多都是写怎么实现 KMP 的,搜不动了,特意提个小问题。
1 回答1.1k 阅读✓ 已解决
1 回答1.4k 阅读
1.2k 阅读
972 阅读
825 阅读
802 阅读
651 阅读
其实类似
KMP
之类的底层工具算法,很多都已经被封装在了各个语言的标准库,或者一些第三方库中。拿你说的
KMP
相关的字符串搜索算法来说,Python
的字符串有find()
、index()
等方法来搜索字串;Go
语言里标准库strings
也提供了Index()
函数来搜索字串,不过不太巧的是,这俩的底层用的都不是KMP
。其中
Python
使用了boyer-moore
和horspool
,在源码文件的注释中(.../Objects/stringlib/fastsearch.h
)是这么描述的而
Go
语言则使用了Rabin-Karp
算法,直接把核心源码贴出来好了:所以你看,都不用什么开源框架,语言的标准库里就实现了这些算法。
然后你的第二个问题里最后的问题,为什么不用其他算法呢?
Go
和Python
就告诉你:“我们就没用KMP
”。