Remove Sub-Folders from the Filesystem - Problem

Given a list of folders, 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.

Input & Output

Example 1 — Basic Case
$ Input: folder = ["/a","/a/b","/c/d","/c/d/e","/c/f"]
Output: ["/a","/c/d","/c/f"]
💡 Note: "/a/b" is a subfolder of "/a" and "/c/d/e" is a subfolder of "/c/d", so they are removed
Example 2 — No Subfolders
$ Input: folder = ["/a","/b","/c"]
Output: ["/a","/b","/c"]
💡 Note: No folder is a subfolder of another, so all folders are kept
Example 3 — Deep Nesting
$ Input: folder = ["/a","/a/b/c","/a/b/d"]
Output: ["/a"]
💡 Note: Both "/a/b/c" and "/a/b/d" are subfolders of "/a", so only "/a" remains

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

Visualization

Tap to expand
Remove Sub-Folders from FilesystemInput Folders:/a/a/b/c/d/c/d/e/c/fsubfoldersubfolderRemove subfolders (shown in red)Result Folders:/a/c/d/c/fOutput: ["/a", "/c/d", "/c/f"]
Understanding the Visualization
1
Input
List of folder paths with some subfolders
2
Identify Subfolders
Find folders that are contained within others
3
Output
Return only the parent folders
Key Takeaway
🎯 Key Insight: Sorting folders alphabetically ensures parent folders appear before their subfolders, enabling efficient O(n log n) detection
Asked in
Amazon 15 Microsoft 12 Google 8
28.5K Views
Medium Frequency
~15 min Avg. Time
892 Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen