Skip to main content

Command Palette

Search for a command to run...

Solving Leetcode Interviews in Seconds with AI: Remove Sub-Folders from the Filesystem

Updated
3 min read

Introduction

In this blog post, we will explore how to solve the LeetCode problem "1233" using AI. LeetCode is a popular platform for preparing for coding interviews, and with the help of AI tools like Chatmagic, we can generate solutions quickly and efficiently - helping you pass the interviews and get the job offer without having to study for months.

Problem Statement

Given a list of folders folder, return the folders after removing all sub-folders in those folders. You may return the answer in any order. If a folder[i] is located within another folder[j], it is called a sub-folder of it. A sub-folder of folder[j] must start with folder[j], followed by a "/". For example, "/a/b" is a sub-folder of "/a", but "/b" is not a sub-folder of "/a/b/c". The format of a path is one or more concatenated strings of the form: '/' followed by one or more lowercase English letters. For example, "/leetcode" and "/leetcode/problems" are valid paths while an empty string and "/" are not. Example 1: Input: folder = ["/a","/a/b","/c/d","/c/d/e","/c/f"] Output: ["/a","/c/d","/c/f"] Explanation: Folders "/a/b" is a subfolder of "/a" and "/c/d/e" is inside of folder "/c/d" in our filesystem. Example 2: Input: folder = ["/a","/a/b/c","/a/b/d"] Output: ["/a"] Explanation: Folders "/a/b/c" and "/a/b/d" will be removed because they are subfolders of "/a". Example 3: Input: folder = ["/a/b/c","/a/b/ca","/a/b/d"] Output: ["/a/b/c","/a/b/ca","/a/b/d"] Constraints: 1 <= folder.length <= 4 * 104 2 <= folder[i].length <= 100 folder[i] contains only lowercase letters and '/'. folder[i] always starts with the character '/'. Each folder name is unique.

Explanation

Here's a breakdown of the solution and the Python code:

  • High-Level Approach:

    • Sort the folders lexicographically. This ensures that a parent folder will always appear before its subfolders in the sorted list.
    • Iterate through the sorted folders, keeping track of the folders that are not subfolders of any previously encountered folder.
    • For each folder, check if it's a subfolder of any of the "kept" folders. If it's not, add it to the "kept" folders list.
  • Complexity Analysis:

    • Runtime Complexity: O(N * M * log(N)), where N is the number of folders and M is the maximum length of a folder path. The sort operation is O(N log N), and the inner loop where we check for subfolders has a complexity of O(N * M) in the worst case. The M factor comes from string prefix comparison.
    • Storage Complexity: O(N), primarily due to the result list which, in the worst case, can store all the input folders.
  • Python Code:

Code

    def remove_subfolders(folder):
    """
    Removes subfolders from a list of folder paths.

    Args:
        folder: A list of folder paths.

    Returns:
        A list of folder paths with subfolders removed.
    """
    folder.sort()
    result = []
    for path in folder:
        is_subfolder = False
        for parent in result:
            if path.startswith(parent + "/"):
                is_subfolder = True
                break
        if not is_subfolder:
            result.append(path)
    return result

More from this blog

C

Chatmagic blog

2894 posts

Solving Leetcode Interviews in Seconds with AI: Remove Sub-Folders from the Filesystem