-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path1598. Crawler Log Folder.cpp
65 lines (47 loc) · 1.78 KB
/
1598. Crawler Log Folder.cpp
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
61
62
63
64
65
// 1598. Crawler Log Folder
// Solved
// Easy
// Topics
// Companies
// Hint
// 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.
class Solution {
public:
int minOperations(vector<string>& logs) {
int n=0;
if(n<0) return 0;
for(int i=0;i<logs.size();i++){
if(logs[i]=="../"){
if(n>0) n--;
}else if(logs[i]=="./"){
continue;
}else{
n++;
}
}
return n;
}
};