Программа Javascript для запросов на вращение и K-й символ заданной строки за постоянное время
Учитывая строку str , задача состоит в том, чтобы выполнить следующие типы запросов к данной строке:
- (1, K): повернуть строку влево на K символов.
- (2, K): вывести K -й символ строки.
Примеры:
Input: str = “abcdefgh”, q[][] = {{1, 2}, {2, 2}, {1, 4}, {2, 7}}
Output:
d
e
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:
a
Подход: основное наблюдение здесь заключается в том, что строку не нужно поворачивать в каждом запросе, вместо этого мы можем создать указатель ptr , указывающий на первый символ строки, и который может обновляться при каждом повороте как ptr = (ptr + K ) % N , где K — целое число, на которое нужно повернуть строку, а N — длина строки. Теперь для каждого запроса второго типа K -й символ можно найти по str[(ptr + K – 1) % N] .
Ниже приведена реализация вышеуказанного подхода:
Временная сложность: O(Q), где Q — количество запросов.
Вспомогательное пространство: O(1)
Пожалуйста, обратитесь к полной статье о запросах на вращение и K-й символ данной строки в постоянное время для более подробной информации!