Допустим, у вас есть файл, который имеет следующую строкуСтрока матч в скользящем окне
a a a b a a b a a b b a b
У вас нет доступа к файлу, но функция FetchNextChar(), что дает по одному символу за раз.
и шаблон для сопоставления a a b
Как бы вы подсчитывают общее число обращений?
Вот что я думаю.
- Если символ неправдоподобное это первый символ шаблона («а»), а затем добавить его в очередь
- Начало добавления/создать связанный список для следующего полукокса, если он совпадает со следующим полукоксом шаблона
Таким образом, после 1-го выборки мы
Pattern -a
Queue - a
Then
Pattern -a a
Queue[0] a->a
Queue[1] a
3rd
Pattern a a b
Queue[0] a -->a--> a //doesn't match, dequeue
Queue[1] a-> a
Queue[2] a
Я думаю, что это будет работать, но этот вопрос я вижу, если есть кратна Чара, что матч с первым символом шаблона я бы сохранить, добавив к очереди и, следовательно, продолжать увеличивать список.
Любые мысли?
Почему бы не алгоритм KMP? – Imposter
@Imposter Do [ссылка на алгоритм] (http://en.wikipedia.org/wiki/KMP_algorithm), если вы хотите это упомянуть. – Dukeling
Вы хотите только совместить 'aab', или это просто пример, и вы хотели бы знать общий алгоритм для подсчета числа входящих строк любой строки в поток текста? – didierc