在C ++中计算另一个字符串中出现多个子字符串的最有效方法是什么?例如,我有一个非常庞大的字符串,如
"GQWHIWQGHWGGEEEGQIHIGWHIQWGHIEEEGPHIQPIWGHQPWGPHEEEGQIHWPWGQHPQWGEEE"
我想计算"EEE"
发生的频率。
我可以一步一步地进入for循环并检查每个字母是否为E,如果是,则计算它们,如果有3 e
s,则增加一个计数器,但我猜有一种更有效的方法。
也许是字符串函数?我只是无法找到或搜索合适的。
我正在寻找一个干净的C ++ 11解决方案。
答案 0 :(得分:0)
好吧,如果你想要一个快速有效的解决方案,请看一下Knuth–Morris–Pratt algorithm - 它只需要O(N + M)来搜索。 如果你想要STL风格的东西,那么看看std::string::find