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
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
💡
Explanation
AI Ready
💡 Suggestion
Tab
to accept
Esc
to dismiss
// Output will appear here after running code