leetcode

Leetcode Solutions (0x6A73)
git clone https://git.pngu.org/leetcode
Log | Files | Refs | Submodules | README

crawler_log_folder.py (1015B)


# 1598. Crawler Log Folder
from functools import reduce

"""
the leetcode file system keeps a log each time some user performs a change
folder operation. the operations are described below. "../" move to the
parent folder of the current folder. if you are already in the main folder,
remain in the same folder. "./" remain in the same folder. "x/" move to the
child folder named 'x' which is guaranteed to exist. you are given a list of
strings 'logs' where 'logs[i]' is the operation performed by the user at the
i'th step.
"""


class Solution(object):
    def minOperations(self, logs):
        """
        :type logs: List[str]
        :rtype: int
        """
        return reduce(lambda depth, folder: max(0, depth - folder.rfind(".")), logs, 0)


if __name__ == "__main__":
    obj = Solution()
    print(obj.minOperations(logs=["d1/", "d2/", "../", "d21/", "./"]))
    print(obj.minOperations(logs=["d1/", "d2/", "./", "d3/", "../", "d31/"]))
    print(obj.minOperations(logs=["d1/", "../", "../", "../"]))