1233. Remove Sub-Folders from the Filesystem
Given a list of folders, remove all sub-folders in those folders and return in any order the folders after removing.
If a folder[i] is located within another folder[j], it is called a sub-folder of it.
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"]
1 class Solution { 2 public List<String> removeSubfolders(String[] folder) { 3 LinkedList<String> ans = new LinkedList<>(); 4 Arrays.sort(folder); 5 for (String f : folder) { 6 if (ans.isEmpty() || !f.startsWith(ans.peekLast() + '/')) {// need '/' to ensure a parent. 比如 /a/b /a/bc 7 ans.offer(f); 8 } 9 } 10 return ans; 11 } 12 }

浙公网安备 33010602011771号