@a2NaF

Как быстро выбирать подстроку у строки?

У меня есть строка, на каждой итерации нужно убирать первый элемент и добавлять в конец новый. Можно ли делать такое обновление быстрее, чем за длину строки? И более обобщенный случай: как выбрать у строки подстроку с определенного индекса до другого индекса (есть ли такая функция в std)?
  • Вопрос задан
  • 130 просмотров
Решения вопроса 1
@a2NaF Автор вопроса
В комментариях Roman подсказал, что из std есть substr
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Mercury13
Программист на «си с крестами» и не только
Использовать кольцевой буфер. Придётся пописать немного, но на что это нужно и какова будет сложность остальных работ?
Ответ написан
@the1vanyes
Можно сделать данную операцию не за O(n), а за O(log n), используя декартово дерево по неявному ключу. Строить его нужно на символах данной строки. Построение - О(n*log(n)), зато удаление и вставка из произвольного места(в т.ч. удаление символа из начала и вставка в конец) за O(log(n).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы