Программа курса:
Задача 3: Папка журнала краулера
Напишите определение функции minOperations(logs), которая принимает список строк logs, представляющих операции изменения папок. Функция должна вернуть минимальное количество операций "../", которые необходимо выполнить, чтобы вернуться в главную папку после выполнения всех операций.
Типы операций:
"../"— Перейти в родительскую папку. Если вы уже находитесь в главной папке, то остаётесь в ней."./"— Остаться в текущей папке."x/"— Перейти в дочернюю папкуx(гарантируется, что такая папка существует).
Файловая система начинает работу из главной папки. После выполнения всех операций нужно вернуть минимальное количество операций "../", чтобы вернуться обратно в главную папку.
Примеры
Пример 1:
Ввод:logs = ["d1/", "d2/", "../", "d21/", "./"]
Вывод:2
Объяснение:
Необходимо выполнить "../" дважды, чтобы вернуться в главную папку.
Схема выполнения операций:
main/
└── d1/
└── d2/ (../ вернёт нас сюда)
└── d21/
Пример 2:
Ввод:logs = ["d1/", "d2/", "./", "d3/", "../", "d31/"]
Вывод:3
Объяснение:
Необходимо выполнить "../" трижды, чтобы вернуться в главную папку.
Схема выполнения операций:
main/
└── d1/
└── d2/
├── d3/ (../ вернёт нас сюда)
└── d31/
Пример 3:
Ввод:logs = ["d1/", "../", "../", "../"]
Вывод:0
Объяснение:
Мы уже находимся в главной папке, дополнительных операций не требуется.
Схема выполнения операций:
main/
└── d1/ (../ вернёт нас обратно в main)