在Python中编写用于查找从文件夹返回主目录所需的最小跳数的程序
假设我们有一个日志文件,其中包含进入文件夹的路径,可能会有不同的符号,如−
- “../”:从当前文件夹移动到父文件夹(如果我们在主文件夹中,则不更改位置)。
-
“./”:留在当前文件夹中。
-
“x/”:移动到名为x的子文件夹。
从日志中,我们必须找到回到停止时的最后一个文件夹所需的最少操作数,以返回主文件夹。
因此,如果输入为logs=[“Dir1 /”,”Dir2 /”,”../”,”Dir2 /”,”Dir3 /”,”./”],则输出将为3
从图中可以看出,我们必须后退三次才能到达主目录。
要解决此问题,我们将按照以下步骤执行 −
- stk:一个新列表
-
对于logs中的每个项目i,请执行以下操作
- 如果i与“../”相同且stk的大小> 0,则
- 从stk中删除最后一个元素
- 否则,当i不同于“./”且i不同于“../”时,则
- 在stk的末尾插入i
- 否则,
- 进入下一个迭代
- 如果i与“../”相同且stk的大小> 0,则
- 返回stk中的项目数
例子(Python)
让我们看下面的实现以获得更好的理解−
def solve(logs):
stk = []
for i in logs:
if i == "../" and len(stk) > 0:
stk.pop()
elif i != "./" and i != "../":
stk.append(i)
else:
continue
return len(stk)
logs = ["Dir1/","Dir2/","../","Dir2/","Dir3/","./"]
print(solve(logs))
输入
["Dir1 /","Dir2 /","../","Dir2 /","Dir3 /","./"]
输出
3