LeetCode 1598. 文件夹操作日志搜集器:模拟 + 记录深度
Posted Tisfy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 1598. 文件夹操作日志搜集器:模拟 + 记录深度相关的知识,希望对你有一定的参考价值。
【LetMeFly】1598.文件夹操作日志搜集器:模拟 + 记录深度
力扣题目链接:https://leetcode.cn/problems/crawler-log-folder/
每当用户执行变更文件夹操作时,LeetCode 文件系统都会保存一条日志记录。
下面给出对变更操作的说明:
"../"
:移动到当前文件夹的父文件夹。如果已经在主文件夹下,则 继续停留在当前文件夹 。"./"
:继续停留在当前文件夹。"x/"
:移动到名为x
的子文件夹中。题目数据 保证总是存在文件夹x
。
给你一个字符串列表 logs
,其中 logs[i]
是用户在 ith
步执行的操作。
文件系统启动时位于主文件夹,然后执行 logs
中的操作。
执行完所有变更文件夹操作后,请你找出 返回主文件夹所需的最小步数 。
示例 1:
输入:logs = ["d1/","d2/","../","d21/","./"] 输出:2 解释:执行 "../" 操作变更文件夹 2 次,即可回到主文件夹
示例 2:
输入:logs = ["d1/","d2/","./","d3/","../","d31/"] 输出:3
示例 3:
输入:logs = ["d1/","../","../","../"] 输出:0
提示:
1 <= logs.length <= 103
2 <= logs[i].length <= 10
logs[i]
包含小写英文字母,数字,'.'
和'/'
logs[i]
符合语句中描述的格式- 文件夹名称由小写英文字母和数字组成
方法一:模拟 + 记录深度
用一个变量记录当前文件深度(初始值位于根目录,深度为0)
-
遇到
../
就深度减一,同时确保深度不会为负 -
遇到
./
就不进行操作 -
遇到其他就深度加一
最后返回最终深度即可。
- 时间复杂度 O ( n ) O(n) O(n),其中 n n n是操作次数
- 空间复杂度 O ( 1 ) O(1) O(1)
AC代码
C++
class Solution
public:
int minOperations(vector<string>& logs)
int nowDepth = 0;
for (string& thisLog : logs)
if (thisLog == "../")
nowDepth = max(nowDepth - 1, 0);
else if (thisLog == "./")
continue;
else
nowDepth++;
return nowDepth;
;
同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/126781249
以上是关于LeetCode 1598. 文件夹操作日志搜集器:模拟 + 记录深度的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 1589 文件夹操作日志搜集器[栈] HERODING的LeetCode之路
10.18--一下午连肝20道leetcode题(纯C实现)
Leetcode 1598. Crawler Log Folder
LeetCode --- 1598. Crawler Log Folder 解题报告