3052. Минимальные замены для специального палиндрома

Medium 2 решили
Дана строка s из строчных латинских букв. Одним действием можно заменить любой символ на любую строчную букву. Найдите минимум замен, чтобы одновременно выполнялись оба условия:

1. s стала палиндромом (читается одинаково слева направо и справа налево);
2. все символы левой половины одинаковы. Левая половина — позиции 0 .. n//2 − 1 (при нечётном n центральная клетка n//2 в половину не входит и может быть любой).

Из условия палиндрома правая половина автоматически станет зеркалом левой: если левая половина — это c c … c, то вся строка будет вида c…c [центр?] c…c.

Важно: обычного палиндрома мало. Например, из abcde за две замены можно получить abcba — это палиндром, но левая половина ab состоит из разных букв, условие 2 не выполнено.

Примеры:

Вход: abcde
Выход: 3
Объяснение: n=5, левая половина — позиции 0 и 1; центр — позиция 2. Нужно s[0]=s[1]=s[3]=s[4]=одной букве c. Вариант abcba (2 замены) — палиндром, но половина «ab» разная → не подходит. Вариант aacaa: меняем b→a, d→a, e→a — ровно 3 замены (минимум).
Вход: aabbc
Выход: 2
Объяснение: Левая половина позиции 0,1 (сейчас «aa»). Выбираем букву «a»: нужно s[3]=s[4]='a' (сейчас «bc») — 2 замены → «aabaa». Другие буквы хуже.
Вход: aaaaa
Выход: 0
Объяснение: Уже вид «aaaaa»: половина из «a», центр «a» → 0 замен.
Вход: abcba
Выход: 2
Объяснение: Уже палиндром, но половина «ab» разная. Чтобы обе клетки половины (и их зеркала) стали «a»: меняем s[1] и s[3] → «aaaaa», 2 замены. Аналогично для «b»: меняем s[0] и s[4].

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

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

Теги:

Строки

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

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

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