难度简单8
每当用户执行变更文件夹操作时,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]
符合语句中描述的格式- 文件夹名称由小写英文字母和数字组成
还是用栈的思想,棒!
class Solution {
public:
int minOperations(vector<string>& logs) {
stack<int> stack;
int count = 0;
for(int i = 0; i < logs.size(); i++){
if(logs[i] == "../" && count > 0){
stack.pop();
count--;
}else if (logs[i] == "./" || (logs[i] == "../" && count == 0)){
continue;
}else{
count++;
stack.push(count);
}
}
return count;
}
};
说点题外话 加油!
也许是今天运气比较好,碰到的题整好是自己比较顺手的,所以写的比较快并且很顺利就通过了。但我想这和自己不断练习不断学习总结肯定有很大关系,写到现在算是有一点点进步了,我很开心,但我知道前面的路还很长,还是要继续加油!另外,在写算法的过程中也是在对自己心理的一种训练,通过了我会很开心,没有通过会有一点失落,但不管怎么样都要努力的调整好心态,这对我来说是非常重要的。渐渐地,我发现自己对算法的信心开始建立起来了,从一开始听到算法都觉得头疼,到现在简单题都能够一个接着一个的提交通过了。而且,在解决算法问题的过程中的心理控制得是有进步的,一开始写不对就很紧张很慌张,甚至有点烦躁,但现在不太一样了。虽然现在提交没有通过也是会有点失落,但现在能够更好的控制情绪,把精力放到找到问题上去,而且心里有一个信念在不算告诉自己:我要沉着冷静下来,我可以的!这样的声音不断鼓励我激励自己前进。是的,在解决算法的过程中,切忌不能乱了阵脚,不能慌乱,要保持冷静的头脑去分析判断,从而解决问题。加油吧,前面的路还很长,相信自己一定能够胜利的,加油!