052 · Crawler Log Folder

algorithm
Published

July 5, 2026

Problem

给定一个字符串数组 logs

你正在文件系统里移动。初始时,你位于主文件夹。

每个 logs[i] 表示一次操作:

  • "../" 表示回到当前文件夹的上一级文件夹
  • "./" 表示停留在当前文件夹
  • "x/" 表示进入名为 x 的子文件夹

如果你已经在主文件夹,执行 "../" 后仍然留在主文件夹,不会再往上移动。

请返回:执行完所有操作以后,最少需要多少次 "../" 操作才能回到主文件夹。

例如:

logs = ["d1/", "d2/", "../", "d21/", "./"]

从主文件夹开始:

main -> d1 -> d2 -> d1 -> d21 -> d21

最后位于 d21,它在主文件夹下面两层,所以需要执行 2 次 "../" 才能回到主文件夹。

答案是:

2

Examples

示例 1

Input:  logs = ["d1/", "d2/", "../", "d21/", "./"]
Output: 2

解释:最终路径相当于 main/d1/d21,需要向上移动两次才能回到主文件夹。

示例 2

Input:  logs = ["d1/", "d2/", "./", "d3/", "../", "d31/"]
Output: 3

解释:最终路径相当于 main/d1/d2/d31,需要向上移动三次才能回到主文件夹。

示例 3

Input:  logs = ["d1/", "../", "../", "../"]
Output: 0

解释:第一次 "../" 回到主文件夹。后面的 "../" 不会让位置超过主文件夹,所以最后已经在主文件夹中。

Constraints

  • \(1 \leq\) logs.length \(\leq 10^3\)
  • \(2 \leq\) logs[i].length \(\leq 10\)
  • logs[i] 只包含小写英文字母、数字、".""/"
  • logs[i]"../""./",或者形如 "x/" 的字符串
  • x 由小写英文字母和数字组成