Ctrl K

Перемешать два окна

Сложная
Дана строка text чётной длины n и список запросов queries, где queries[i] = [a, b, c, d]. В запросе разрешено: - произвольно переставить буквы на позициях с a по b включительно — это окно лежит в левой половине строки; - произвольно переставить буквы на позициях с c по d включительно — это окно лежит в правой половине. Для каждого запроса определите, можно ли такими перестановками превратить text в палиндром. Запросы независимы: каждый начинается с исходной строки. Верните список ответов True/False в порядке запросов.
Пример 1
text='abccab', queries=[[0, 1, 4, 5], [0, 0, 3, 3]] → [True, False]

Запрос 0: в левом окне «ab» переставляем буквы в «ba», получается «baccab» — палиндром. Запрос 1: окна однобуквенные, переставлять нечего, а «abccab» не палиндром.

Пример 2
text='xyzyzx', queries=[[1, 2, 3, 4]] → [True]

Крайние «x» уже стоят зеркально. Средние позиции 1–4 целиком внутри окон, и буквы в них — по одной «y» и «z» с каждой стороны, так что можно получить, например, «xyzzyx».

Пример 3
text='abcdef', queries=[[0, 2, 3, 5]] → [False]

Окна покрывают всю строку, но в левой половине буквы a, b, c, а в правой — d, e, f. Зеркальных пар не составить.

Ограничения
  • 2 ≤ n = len(text) ≤ 10⁵, n чётно
  • text состоит из строчных латинских букв
  • 1 ≤ len(queries) ≤ 10⁵
  • 0 ≤ a ≤ b < n / 2
  • n / 2 ≤ c ≤ d < n
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСбалансированные отрезки строки СложнаяСамый длинный замкнутый отрезок СложнаяПиковая высота штоков насоса СложнаяПалиндром после пары правок СредняяЧётные гласные Средняя
загружаем Python…
Вход
text='abccab', queries=[[0, 1, 4, 5], [0, 0, 3, 3]]
Ожидается
[True, False]

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