All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g1501_1600.s1598_crawler_log_folder.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g1501_1600.s1598_crawler_log_folder;

// #Easy #Array #String #Stack #2022_04_08_Time_0_ms_(100.00%)_Space_42_MB_(81.44%)

/**
 * 1598 - Crawler Log Folder\.
 *
 * Easy
 *
 * 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:**
 *
 * ![](https://assets.leetcode.com/uploads/2020/09/09/sample_11_1957.png)
 *
 * **Input:** logs = ["d1/","d2/","../","d21/","./"]
 *
 * **Output:** 2
 *
 * **Explanation:** Use this change folder operation "../" 2 times and go back to the main folder.
 *
 * **Example 2:**
 *
 * ![](https://assets.leetcode.com/uploads/2020/09/09/sample_22_1957.png)
 *
 * **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.
**/
public class Solution {
    public int minOperations(String[] logs) {
        int steps = 0;
        for (String log : logs) {
            if (log.equals("../")) {
                if (steps > 0) {
                    steps--;
                }
            } else if (!log.equals("./")) {
                steps++;
            }
        }
        return steps;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy