题目描述
下面给出对变更操作的说明:
"../" :移动到当前文件夹的父文件夹。如果已经在主文件夹下,则 继续停留在当前文件夹 。
"./" :继续停留在当前文件夹。
"x/" :移动到名为 x 的子文件夹中。题目数据 保证总是存在文件夹 x 。
给你一个字符串列表 logs ,其中 logs[i] 是用户在 ith 步执行的操作。
文件系统启动时位于主文件夹,然后执行 logs 中的操作。
执行完所有变更文件夹操作后,请你找出 返回主文件夹所需的最小步数
测试用例
1
输入:logs = [“d1/”,“d2/”,"…/",“d21/”,"./"]
输出:2
解释:执行 “…/” 操作变更文件夹 2 次,即可回到主文件夹
2
输入:logs = [“d1/”,“d2/”,"./",“d3/”,"…/",“d31/”]
输出:3
思路
遍历数组,当内容为"./“时,执行continue操作,循环继续,如果内容为”…/"时,当stack不为空时,弹出栈顶元素,如果内容为其他命令时,将内容压入栈中,最后统计栈内元素,就是答案
这题不用栈也可以做,但是我就是想熟悉一下栈的用法
代码
class Solution {
public int minOperations(String[] logs) {
int sum=0;
Stack<String> Stack = new Stack<String>();
for(int i=0;i<logs.length;i++){
if(logs[i].equals("./")){
continue;
}
if(logs[i].equals("../")){
if(!Stack.empty()){
Stack.pop();
}
}else{
Stack.push(logs[i]);
}
}
while(!Stack.empty()){
Stack.pop();
sum++;
}
return sum;
}
}
有想一起刷题学习的可以加群一起学习
910883723