Ctrl K

Пары зеркальных букв

Средняя
**Зеркальной** для буквы латинского алфавита назовём букву, стоящую на том же месте, если алфавит перевернуть: для a это z, для b — y, для m — n, и наоборот. Дана строка word. Изначально ни одна позиция не занята. Пройдите по строке слева направо; для каждой позиции i найдите **ближайшую** слева свободную позицию j < i, на которой стоит буква, зеркальная word[i]. Если такая есть, отметьте обе позиции занятыми и прибавьте к счёту i - j; если нет, просто переходите дальше. Верните итоговый счёт (изначально он равен 0).
Пример 1
word='bayyzb' → 7

Зеркало «b» — «y», зеркало «a» — «z». На позиции 2 буква y находит свободную b на позиции 0: +2. На позиции 3 вторая y ищет b, но свободных b левее нет. На позиции 4 z находит a на позиции 1: +3. На позиции 5 b ищет y и находит свободную y на позиции 3: +2. Итого 7.

Пример 2
word='hello' → 1

Зеркала букв h, e, l, o — s, v, o, l. На позиции 4 буква o находит ближайшую свободную l на позиции 3: +1. Итого 1.

Пример 3
word='mn' → 1

«m» и «n» — зеркала друг друга, пара даёт 1.

Ограничения
  • 1 ≤ len(word) ≤ 10⁵
  • word состоит из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиВычеркнуть образец до конца СредняяАварии на одной полосе СредняяЗвёздочка вместо Backspace СредняяПринтер с подносом СредняяЗвёздочки стирают меньшие буквы Средняя
загружаем Python…
Вход
word='bayyzb'
Ожидается
7

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 77 тестов на сервере, включая скрытые.