Взять в качестве примера следующую строку:
"Быстрая коричневая лиса"
Прямо сейчас q в quick находится в индексе 4 строки (начиная с 0), а f в fox - в индексе 16. Теперь предположим, что пользователь вводит еще немного текста в эту строку.
"Очень быстрая темно-коричневая лиса"
Теперь q в индексе 9, а f в индексе 26.
Какой самый эффективный метод отслеживания индекса исходного q в быстрой и f в лисе независимо от того, сколько символов добавлено пользователем?
Язык не имеет значения для меня, это больше вопрос теории, чем что-либо, поэтому используйте любой язык, который вы хотите, просто попытайтесь сохранить его на общедоступных и современных языках.
Пример строки, которую я дал, короток, но я надеюсь на способ, который может эффективно обрабатывать строки любого размера. Таким образом, обновление массива со смещением будет работать с короткой строкой, но с большим количеством символов.
Несмотря на то, что в примере я искал индекс уникальных символов в строке, я также хочу иметь возможность отслеживать индекс одного и того же символа в разных местах, таких как o в коричневом цвете и o в лисице. Так что о поиске не может быть и речи.
Я надеялся, что ответ будет эффективным и по времени, и по памяти, но если мне нужно было выбрать только один, меня больше волнует скорость работы.