2015-04-14 4 views
-5

Каков наиболее эффективный способ подсчета числа вхождений подстроки в другую строку на C++? Например, у меня есть очень большая строка, какСтрока поиска для последовательности строк

"GQWHIWQGHWGGEEEGQIHIGWHIQWGHIEEEGPHIQPIWGHQPWGPHEEEGQIHWPWGQHPQWGEEE" 

и я хочу, чтобы подсчитать, как часто "EEE" происходит.

Я мог бы пойти шаг за шагом в цикл for и проверить каждую букву, если это E, и если да, посчитайте их, и если есть 3 e s, увеличьте счетчик, но я думаю, что существует более эффективный способ делая это.

Может быть, функция строки? Я просто не смог найти или сделать подходящий.

Я ищу чистое решение на C++ 11.

+0

http://stackoverflow.com/questions/541954/how-would-you-count-occurrences-of-a-string-within-a- string – user7610

+0

Связанный вопрос о C#, а не C++. –

+0

хороший момент, извините – user7610

ответ

0

Ну, если вы хотите быстрое и эффективное решение, взгляните на Knuth–Morris–Pratt algorithm - для поиска требуется только O (N + M). Если вы хотите что-то в стиле STL, то посмотрите на std::string::find

Смежные вопросы