Ctrl K

Фразы со словами-синонимами

Лёгкая
Фраза записана как массив слов. Даны две фразы first и second и список пар синонимов synonyms, где пара [x, y] означает, что слова x и y взаимозаменяемы (в обе стороны). Фразы считаются равнозначными, если в них одинаковое число слов и на каждой позиции i слова first[i] и second[i] либо совпадают, либо образуют пару синонимов из списка. Синонимия не переходит по цепочке: из пар [a, b] и [b, c] не следует, что a и c синонимы. Верните true, если фразы равнозначны, и false иначе.
Пример 1
first=['quick', 'brown', 'fox'], second=['fast', 'brown', 'fox'], synonyms=[['fast', 'quick']] → True

«quick» и «fast» — синонимы (пара работает в обе стороны), остальные слова совпадают.

Пример 2
first=['big', 'house'], second=['huge', 'home'], synonyms=[['big', 'large'], ['large', 'huge'], ['house', 'home']] → False

«big» похоже на «large», а «large» — на «huge», но по цепочке сходство не передаётся, так что «big» и «huge» не синонимы.

Пример 3
first=['hello'], second=['hello', 'there'], synonyms=[] → False

Во фразах разное число слов — они не могут значить одно и то же.

Ограничения
  • 1 ≤ first.length, second.length ≤ 10⁴
  • 0 ≤ synonyms.length ≤ 10⁴
  • каждое слово — от 1 до 20 латинских букв (строчных или заглавных)
  • synonyms[i].length == 2, все пары различны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСлова одного ряда ЛёгкаяГде поужинать вдвоём ЛёгкаяСлово из букв автономера ЛёгкаяРазличные сигналы азбуки Морзе ЛёгкаяСколько настоящих ящиков Лёгкая
загружаем Python…
Вход
first=['quick', 'brown', 'fox'], second=['fast', 'brown', 'fox'], synonyms=[['fast', 'quick']]
Ожидается
True

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