-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path1233.remove-sub-folders-from-the-filesystem.py
77 lines (54 loc) · 2.36 KB
/
1233.remove-sub-folders-from-the-filesystem.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
from lc import *
# https://leetcode.com/problems/remove-sub-folders-from-the-filesystem/discuss/409028/JavaPython-3-3-methods-from-O(n-*-(logn-%2B-m-2))-to-O(n-*-m)-w-brief-explanation-and-analysis.
class Solution:
def removeSubfolders(self, folder: List[str]) -> List[str]:
folder.sort(key=lambda f: len(f))
seen = set()
for f in folder:
for i in range(2, len(f)):
if f[i] == '/' and f[: i] in seen:
break
else:
seen.add(f)
return list(seen)
# updated 2024-10-25 (POTD)
class Solution:
def removeSubfolders(self, d: List[str]) -> List[str]:
r=[];[r.append(f)for f in sorted(d)if not(r and f.startswith(r[-1]+'/'))];return r
# https://leetcode.com/problems/remove-sub-folders-from-the-filesystem/discuss/5966255/One-Line-Solution
class Solution:
def removeSubfolders(self, f: List[str]) -> List[str]:
q=' ';return[q:=v for v in sorted(f)if v.find(q+'/')]
test('''
1233. Remove Sub-Folders from the Filesystem
Medium
823
116
Add to List
Share
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.
Accepted
55,535
Submissions
83,983
''')