返回介绍

solution / 1500-1599 / 1598.Crawler Log Folder / README_EN

发布于 2024-06-17 01:03:16 字数 4980 浏览 0 评论 0 收藏 0

1598. Crawler Log Folder

中文文档

Description

The Leetcode file system keeps a log each time some user performs a _change folder_ operation.

The operations are described below:

  • "../" : Move to the parent folder of the current folder. (If you are already in the main folder, remain in the same folder).
  • "./" : Remain in the same folder.
  • "x/" : Move to the child folder named x (This folder is guaranteed to always exist).

You are given a list of strings logs where logs[i] is the operation performed by the user at the ith step.

The file system starts in the main folder, then the operations in logs are performed.

Return _the minimum number of operations needed to go back to the main folder after the change folder operations._

 

Example 1:

Input: logs = ["d1/","d2/","../","d21/","./"]
Output: 2
Explanation: Use this change folder operation "../" 2 times and go back to the main folder.

Example 2:

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

Example 3:

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

 

Constraints:

  • 1 <= logs.length <= 103
  • 2 <= logs[i].length <= 10
  • logs[i] contains lowercase English letters, digits, '.', and '/'.
  • logs[i] follows the format described in the statement.
  • Folder names consist of lowercase English letters and digits.

Solutions

Solution 1

class Solution:
  def minOperations(self, logs: List[str]) -> int:
    ans = 0
    for v in logs:
      if v == "../":
        ans = max(0, ans - 1)
      elif v[0] != ".":
        ans += 1
    return ans
class Solution {
  public int minOperations(String[] logs) {
    int ans = 0;
    for (var v : logs) {
      if ("../".equals(v)) {
        ans = Math.max(0, ans - 1);
      } else if (v.charAt(0) != '.') {
        ++ans;
      }
    }
    return ans;
  }
}
class Solution {
public:
  int minOperations(vector<string>& logs) {
    int ans = 0;
    for (auto& v : logs) {
      if (v == "../") {
        ans = max(0, ans - 1);
      } else if (v[0] != '.') {
        ++ans;
      }
    }
    return ans;
  }
};
func minOperations(logs []string) int {
  ans := 0
  for _, v := range logs {
    if v == "../" {
      if ans > 0 {
        ans--
      }
    } else if v[0] != '.' {
      ans++
    }
  }
  return ans
}
function minOperations(logs: string[]): number {
  let depth = 0;
  for (const log of logs) {
    if (log === '../') {
      depth = Math.max(0, depth - 1);
    } else if (log !== './') {
      depth++;
    }
  }
  return depth;
}
impl Solution {
  pub fn min_operations(logs: Vec<String>) -> i32 {
    let mut depth = 0;
    for log in logs.iter() {
      if log == "../" {
        depth = (0).max(depth - 1);
      } else if log != "./" {
        depth += 1;
      }
    }
    depth
  }
}
#define max(a, b) (((a) > (b)) ? (a) : (b))

int minOperations(char** logs, int logsSize) {
  int depth = 0;
  for (int i = 0; i < logsSize; i++) {
    char* log = logs[i];
    if (!strcmp(log, "../")) {
      depth = max(0, depth - 1);
    } else if (strcmp(log, "./")) {
      depth++;
    }
  }
  return depth;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文