Ctrl K

Заменить все буквы

Сложная
В текстовом редакторе есть команда «заменить все» для одной буквы: выбираете строчную латинскую букву x и любую другую строчную латинскую букву y, и все вхождения x в строке разом становятся y. Даны строки source и target одинаковой длины. Можно ли, применив эту команду сколько угодно раз (в том числе ни разу), превратить source в target? Верните True или False.
Пример 1
source='xxyz', target='zzxy' → True

Буквы нужно сдвинуть по кругу: x → z, y → x, z → y. Любая из этих замен, сделанная первой, склеила бы две группы букв, поэтому сначала уводим z во временную букву: xxyz → xxyq → zzyq → zzxq → zzxy.

Пример 2
source='aab', target='abb' → False

Обе буквы a меняются только вместе, а в target им соответствуют разные буквы — a и b.

Пример 3
source='abcdefghijklmnopqrstuvwxyz', target='bcdefghijklmnopqrstuvwxyza' → False

Нужен сдвиг по кругу всех 26 букв, но в строке заняты все буквы алфавита, и временную взять неоткуда. Первая же замена склеит две буквы, и разделить их потом уже не получится.

Ограничения
  • 1 ≤ source.length ≤ 10⁵
  • target.length == source.length
  • source и target состоят только из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиБлоки слов в любом порядке СложнаяКратчайший отрезок со всеми буквами СложнаяЦепочка по одной букве СложнаяВсе способы расставить пробелы СложнаяСклеить в палиндром Сложная
загружаем Python…
Вход
source='xxyz', target='zzxy'
Ожидается
True

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