Не существует единого «самого быстрого пути» это зависит от
A) Из чего строится строка (длина, распределение символов, ...)
B) На каком оборудовании это работает
C) Если вы хотите, чтобы все результаты были параллельными или последовательными
D) Другие параметры (например, могут ли найденные элементы перекрываться, ищите ли вы один или несколько раз)
E) Если вы видите эту реализацию специфической или просто академической. В реализации есть много дополнительных способов оптимизации вещей. Например. временное хранение (как в вашем предложении) часто очень дорого.
Идея, которая у вас есть, например. будет полностью уничтожить любой кэш процессора для длинных строк. Так что в таких случаях это будет ОЧЕНЬ медленно.