1598. 文件夹操作日志搜集器
大约 2 分钟
--- 

1598. 文件夹操作日志搜集器
- 标签:栈、数组、字符串
- 难度:简单
题目链接
题目大意
描述:给定一个字符串列表 ,表示一个文件系统在某个文件夹中的操作日志。文件系统只包含一个根文件夹。操作分为三种:
"./":保持当前文件夹不变。"../":移动到父文件夹(如果已经在根文件夹,则不动)。"x/":移动到名为 的子文件夹。
起始位置在根文件夹。
要求:返回执行所有操作后,返回根文件夹所需的最少步数(每次 "../" 算一步)。
说明:
- 。
- 由小写字母、数字、点、斜杠组成。
示例:
- 示例 1:

输入:logs = ["d1/","d2/","../","d21/","./"]
输出:2
解释:执行 "../" 操作变更文件夹 2 次,即可回到主文件夹- 示例 2:

输入:logs = ["d1/","d2/","./","d3/","../","d31/"]
输出:3解题思路
思路 1:模拟(深度计数)
1. 核心思想
用变量 表示当前文件夹深度(根文件夹为 )。遍历每个操作,更新深度。最终 就是需要返回根文件夹的步数(每层 "../" 一步)。
2. 具体步骤
第 1 步:初始化 。
第 2 步:遍历 :
- 如果 :跳过。
- 如果 :。
- 否则(子文件夹):。
第 3 步:返回 。
3. 举例说明
以 为例:
"d1/"→"d2/"→"../"→"d21/"→"./"→ 不变
最终 ,需要 步返回根。
以 为例:
"../"→ (已在根,不动)"../"→"../"→
最终 。
以 为例:
"./"→"../"→"../"→
最终 。
4. 复杂度分析
- 每个操作 时间,总时间 。
- 仅用常数空间。
思路 1:代码
class Solution:
def minOperations(self, logs: List[str]) -> int:
depth = 0
for log in logs:
if log == "./":
continue
elif log == "../":
if depth > 0:
depth -= 1
else:
depth += 1
return depth思路 1:复杂度分析
- 时间复杂度:,遍历一次。
- 空间复杂度:。