Ctrl K

Файлы с одинаковым содержимым

Средняя
Дана выгрузка файловой системы listing. Каждая строка описывает одну папку: сначала путь к ней, а затем через пробел её файлы в виде имя(содержимое). Например, строка "home/docs a.txt(hello) b.txt(world)" значит, что в папке home/docs лежат файл a.txt с текстом hello и файл b.txt с текстом world. Полный путь файла — путь папки, затем / и имя файла, например home/docs/a.txt. Найдите все группы из двух и более файлов с одинаковым содержимым и верните их как списки полных путей. Порядок групп и порядок путей внутри группы любые.
Пример 1
listing=["home/docs a.txt(hello) b.txt(world)", "home/pics c.txt(hello)", "home d.txt(bye)"] → [['home/docs/a.txt', 'home/pics/c.txt']]

Одинаковое содержимое hello только у home/docs/a.txt и home/pics/c.txt. Остальные файлы уникальны.

Пример 2
listing=["disk x.txt(42) y.txt(42) z.txt(42)", "disk/tmp w.txt(7)"] → [['disk/x.txt', 'disk/y.txt', 'disk/z.txt']]

Три файла в одной папке совпадают по содержимому и образуют одну группу.

Пример 3
listing=["root a.txt(one)", "root/b c.txt(two)"] → []
Ограничения
  • 1 ≤ len(listing) ≤ 2 · 10⁴
  • 1 ≤ len(listing[i]) ≤ 3000, суммарная длина строк не больше 5 · 10⁵
  • Путь папки — имена из латинских букв и цифр через /; имя файла — латинские буквы, цифры и точки; содержимое — непустая строка из латинских букв и цифр
  • В каждой папке хотя бы один файл, имена файлов в одной папке различны
  • Каждая папка описана не больше одного раза
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиРазложить анаграммы по группам СредняяРазбиение на слова из словаря СредняяСлова, равные со сдвигом СредняяПодпоследовательность только одного слова СредняяПодсветить найденное Средняя
загружаем Python…
Вход
listing=["home/docs a.txt(hello) b.txt(world)", "home/pics c.txt(hello)", "home d.txt(bye)"]
Ожидается
[['home/docs/a.txt', 'home/pics/c.txt']]

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