-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcrawler-log-folder_1598.py
60 lines (41 loc) · 1.85 KB
/
crawler-log-folder_1598.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# 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 (This folder is guaranteed to always exist).
# You are given a list of strings logs where logs[i] is the operation performed by the user at the ith step.
# The file system starts in the main folder, then the operations in logs are performed.
# Return the minimum number of operations needed to go back to the main folder after the change folder operations.
# Example 1:
# Input: logs = ["d1/","d2/","../","d21/","./"]
# Output: 2
# Explanation: Use this change folder operation "../" 2 times and go back to the main folder.
# Example 2:
# Input: logs = ["d1/","d2/","./","d3/","../","d31/"]
# Output: 3
# Example 3:
# Input: logs = ["d1/","../","../","../"]
# Output: 0
# Constraints:
# 1 <= logs.length <= 103
# 2 <= logs[i].length <= 10
# logs[i] contains lowercase English letters, digits, '.', and '/'.
# logs[i] follows the format described in the statement.
# Folder names consist of lowercase English letters and digits.
# ---------------------------------------Runtime 45 ms Beats 81.19% Memory 16.66 MB Beats 82.14%---------------------------------------
from typing import List
class Solution:
def minOperations(self, logs: List[str]) -> int:
attempts = 0
for item in logs:
match item:
case "../":
if attempts - 1 >= 0:
attempts -= 1
else:
attempts = 0
case "./":
continue
case _:
attempts += 1
return attempts