搜索字符串序列

时间:2015-04-14 21:48:04

标签: c++

在C ++中计算另一个字符串中出现多个子字符串的最有效方法是什么?例如,我有一个非常庞大的字符串,如

"GQWHIWQGHWGGEEEGQIHIGWHIQWGHIEEEGPHIQPIWGHQPWGPHEEEGQIHWPWGQHPQWGEEE"

我想计算"EEE"发生的频率。

我可以一步一步地进入for循环并检查每个字母是否为E,如果是,则计算它们,如果有3 e s,则增加一个计数器,但我猜有一种更有效的方法。

也许是字符串函数?我只是无法找到或搜索合适的。

我正在寻找一个干净的C ++ 11解决方案。

1 个答案:

答案 0 :(得分:0)

好吧,如果你想要一个快速有效的解决方案,请看一下Knuth–Morris–Pratt algorithm - 它只需要O(N + M)来搜索。 如果你想要STL风格的东西,那么看看std::string::find