Программа Javascript для минимизации символов, которые нужно изменить, чтобы сделать левое и правое вращение строки одинаковым

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

Для заданной строки S строчных букв английского алфавита задача состоит в том, чтобы найти минимальное количество символов, которое нужно изменить, чтобы поворот строки влево и вправо был одинаковым.

Примеры:

Input: S = “abcd”
Output: 2
Explanation:
String after the left shift: “bcda”
String after the right shift: “dabc”
Changing the character at position 3 to ‘a’ and character at position 4 to ‘b’, the string is modified to “abab”.
Therefore, both the left and right rotations becomes “baba”.

Input: S = “gfg”
Output: 1
Explanation:
After updating the character at position 1 to ‘g’, the string becomes “ggg”.
Therefore, the left and right rotation are equal.

Подход: ключевое наблюдение для решения проблемы заключается в том, что когда длина строки четная, то все символы с четным индексом и символы с нечетным индексом должны быть одинаковыми, чтобы повороты влево и вправо были одинаковыми. Для строк нечетной длины все символы должны быть равны. Выполните следующие шаги, чтобы решить проблему:

  • Проверьте, является ли длина строки четной, тогда минимальное количество символов, которое нужно изменить, равно длине строки без учета частоты наиболее часто встречающегося элемента по четным и нечетным индексам.
  • В противном случае, если длина строки нечетная, то минимальное количество символов, которое нужно изменить, равно длине строки, исключая частоту наиболее часто встречающихся символов в строке.
  • Распечатайте полученный окончательный счет.

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

Временная сложность: O(N), так как мы используем цикл для прохождения N раз, поэтому это будет стоить нам O(N) времени
Вспомогательное пространство: O(1), так как мы не используем дополнительное пространство.

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