-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy paths1598_crawler_log_folder.go
More file actions
53 lines (42 loc) · 1.05 KB
/
s1598_crawler_log_folder.go
File metadata and controls
53 lines (42 loc) · 1.05 KB
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
/*
https://leetcode.com/problems/crawler-log-folder/
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.
*/
package solutions
type deep int
func (d *deep) inc() { *d++ }
func (d *deep) dec() {
if *d > 0 {
*d--
}
}
func minOperations(logs []string) int {
var d deep
for _, step := range logs {
switch step {
case "../":
d.dec()
case "./":
continue
default:
d.inc()
}
}
return int(d)
}