Skip to content

Instantly share code, notes, and snippets.

@alkhe
Created June 3, 2020 07:17
Show Gist options
  • Save alkhe/b1e8a0e7922ebb6c9192c8766e152932 to your computer and use it in GitHub Desktop.
Save alkhe/b1e8a0e7922ebb6c9192c8766e152932 to your computer and use it in GitHub Desktop.
1233. Remove Sub-Folders from the Filesystem
function removeSubfolders(folders) {
const tree = {}
for (let i = 0; i < folders.length; i++) {
const f = folders[i]
let node = tree
let name = ''
for (let j = 1; j < f.length; j++) {
const char = f[j]
if (char === '/') {
if (name in node) {
if (node[name] === 0) break
} else {
node[name] = {}
}
node = node[name]
name = ''
} else {
name += char
}
}
node[name] = 0
}
const out = []
const stack = ['/', tree]
while (stack.length !== 0) {
const node = stack.pop()
const prefix = stack.pop()
for (let k in node) {
const path = prefix + k
if (node[k] === 0) {
out.push(path)
} else {
stack.push(path + '/')
stack.push(node[k])
}
}
}
return out
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment