56-文件夹操作日志搜集器

image-20210604191822268

自己的做法

算法思想

对于每一个x/记录,都代表进入了当前文件夹下的一个子文件夹。../代表返回上一个文件夹。

所以使用栈来存所有有效的记录,有效的记录是指x/型记录。

首先遍历logs数组,如果当前遍历字符串时x/,则入栈;如果是../则弹出栈顶元素;如果是./,则什么都不做。

最后栈中元素个数就是返回主文件夹所需的最小步数。

算法实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Solution {
public:
int minOperations(vector<string>& logs) {
stack<string> s;
for(string str : logs) {
if(str == "../") {
if(!s.empty()) {
s.pop();
}
} else if(str == "./") {

} else {
s.push(str);
}
}
return s.size();
}
};

性能分析

时间复杂度:O(n)O(n)。n为logs数组元素个数。

空间复杂度:O(n)O(n)

无参考做法。


56-文件夹操作日志搜集器
https://zhaoquaner.github.io/2022/05/11/leetcode/栈/56-文件夹操作日志搜集器/
更新于
2022年5月22日
许可协议