Чтобы был класс который определяет когда произошло вхождение подстроки в строку, причём символы текста, в котором надо искать подстроку, подаются по одному
- Код: Выделить всё
TSearcher = class
public
constructor Create(aDesired: string);
function Match(c: Char): Boolean;
end;
При этом у класса будет много раз вызываться метод Match, и он должен вернуть True когда в подстроке он достиг конца искомого слова
- Код: Выделить всё
for i := 1 to Length(s) do
if searcher.Match(s[i]) then
WriteLN('Found desired str at #', i);
До решения "в лоб", которое заключается в том, чтобы сохранять последние Length(aDesired) символов в поле TSearcher'а и каждый раз "прокручивать" влево буфер, вставлять в конец символ и сравнивать BackLog = Desired я уже додумался, но вычислительная сложность такого решения будет не самая лучшая.
Идеи? предложения? плз