Skip to main content
Back to problems
#1233
Medium Algorithms

Remove sub folders from the filesystem

Array String Depth-First Search Trie
78.6% acceptance
Feb 25, 2026
1653
231
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.

Solution

Rust
Time O(n log n)
Space O(n)
LeetCode
solution.rs
impl Solution {
  pub fn remove_subfolders(mut folder: Vec<String>) -> Vec<String> {
    folder.sort();
    let mut result: Vec<String> = Vec::new();
    for f in folder {
      if let Some(last) = result.last() {
        // Check if f starts with last + "/"
        let prefix = format!("{}/", last);
        if f.starts_with(&prefix) {
          continue;
        }
      }
      result.push(f);
    }
    result
  }
}