问题描述:
- 每当用户执行变更文件夹操作时,LeetCode 文件系统都会保存一条日志记录。
- 下面给出对变更操作的说明:
"../"
:移动到当前文件夹的父文件夹,如果已经在主文件夹下,则继续停留在当前文件夹。"./"
:继续停留在当前文件夹。"x/"
:移动到名为 x
的子文件夹中,题目数据保证总是存在文件夹 x
。
- 给定一个字符串列表
logs
,其中 logs[i]
是用户在第 i
步执行的操作。 - 文件系统启动时位于主文件夹,然后执行
logs
中的操作。 - 执行完所有变更文件夹操作后,找出返回主文件夹所需的最小步数。
核心思路:
- 简单模拟题,只有三种情况,则对该三种情况分类讨论即可,用变量
ans
表示文件夹深度:
log = "./"
,相当于不操作。log = "x/"
,文件夹深度加一,即 ++ans
。log = "../“
,ans
取 max(0, ans-1)
。
代码实现:
class Solution
{
public:
int minOperations(vector<string>& logs)
{
int ans = 0;
for(auto& log : logs)
{
if(log == "./");
else if(log == "../") ans = max(0, ans-1);
else ++ans;
}
return ans;
}
};