Программа Javascript для запросов на вращение и K-й символ заданной строки за постоянное время

Опубликовано: 2 Сентября, 2022

Учитывая строку str , задача состоит в том, чтобы выполнить следующие типы запросов к данной строке:

  1. (1, K): повернуть строку влево на K символов.
  2. (2, K): вывести K символ строки.

Примеры:

Input: str = “abcdefgh”, q[][] = {{1, 2}, {2, 2}, {1, 4}, {2, 7}} 
Output: 


Query 1: str = “cdefghab” 
Query 2: 2nd character is d 
Query 3: str = “ghabcdef” 
Query 4: 7th character is e
Input: str = “abc”, q[][] = {{1, 2}, {2, 2}} 
Output: 

 

Подход: основное наблюдение здесь заключается в том, что строку не нужно поворачивать в каждом запросе, вместо этого мы можем создать указатель ptr , указывающий на первый символ строки, и который может обновляться при каждом повороте как ptr = (ptr + K ) % N , где K — целое число, на которое нужно повернуть строку, а N — длина строки. Теперь для каждого запроса второго типа K символ можно найти по str[(ptr + K – 1) % N] .
Ниже приведена реализация вышеуказанного подхода:

Временная сложность: O(Q), где Q — количество запросов.
Вспомогательное пространство: O(1)

Пожалуйста, обратитесь к полной статье о запросах на вращение и K-й символ данной строки в постоянное время для более подробной информации!