Программа Javascript для проверки возможности получения строки путем поворота другой строки на d мест

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

Имея две строки str1 и str2 и целое число d , нужно проверить, можно ли получить строку str2 , повернув строку str1 на d позиций (влево или вправо).

Примеры:

Input: str1 = “abcdefg”, str2 = “cdefgab”, d = 2 
Output: Yes 
Rotate str1 2 places to the left.

Input: str1 = “abcdefg”, str2 = “cdfdawb”, d = 6 
Output: No 
 

Подход: здесь обсуждался подход к решению той же проблемы. В этой статье используется реверсивный алгоритм для поворота строки влево и вправо за O(n). Если любой из поворотов str1 равен str2 , то выведите Yes , иначе выведите No.

Ниже приведена реализация вышеуказанного подхода:


Временная сложность: O(n)

Подход: в этом подходе мы используем временную строку, которая представляет собой длинную строку с кратностью str1 на 2. Если мы хотим повернуть строку на d место, мы нарезаем строку из n мест, начиная с d. Точно так же мы вращаем вправо. Для вращения вправо мы используем d со значением (длина str1) – d. Если любой из поворотов строки str1 равен строке str2, то выведите Да, иначе выведите Нет.

Ниже приведена реализация вышеуказанного подхода:

Выход:

Yes 

Пожалуйста, обратитесь к полной статье о проверке, можно ли получить строку, повернув другую строку на d мест для получения более подробной информации!