3027. Циклический сдвиг строки

Easy 3 решили
Даны две строки s и goal из строчных латинских букв (могут быть пустыми).

Циклический сдвиг строки на k позиций — это когда первые k символов отрезают слева и приписывают в конец (остальные символы сдвигаются влево). Например, для s = "abcde":
• k = 0 → "abcde" (без изменений);
• k = 1 → "bcdea";
• k = 2 → "cdeab";
• k = 5 → снова "abcde" (полный оборот).

Верните true, если существует такое k (включая 0), что после циклического сдвига s получается ровно goal. Иначе верните false.

Если длины s и goal разные — ответ всегда false (сдвиг длину не меняет). Две пустые строки считаются совпадением (true).

s    = a b c d e
         ↓ сдвиг k=2
goal = c d e a b   → true

s    = a b c d e
goal = a b c e d   → false (это не циклический сдвиг)

Примеры:

Вход: {"s": "abcde", "goal": "cdeab"}
Выход: true
Объяснение: Сдвиг на k=2: первые два символа «ab» переносятся в конец → «cdeab». Это совпадает с goal.
Вход: {"s": "abcde", "goal": "abced"}
Выход: false
Объяснение: «abced» — перестановка букв, но не циклический сдвиг «abcde»: ни при каком k сдвиг не даст такой порядок.
Вход: {"s": "abcde", "goal": "abcde"}
Выход: true
Объяснение: Сдвиг k=0 (или полный оборот) оставляет строку без изменений.
Вход: {"s": "ab", "goal": "ba"}
Выход: true
Объяснение: Сдвиг k=1: «ab» → «ba».
Вход: {"s": "a", "goal": "aa"}
Выход: false
Объяснение: Длины разные (1 и 2) — циклический сдвиг длины не меняет.

Ограничения:

0 <= s.length, goal.length <= 2000 s и goal состоят из строчных английских букв

Теги:

Строки

Комментарии (0)

Зарегистрируйтесь или войдите, чтобы оставить комментарий

Пока нет комментариев. Будьте первым!