1233. Remove Sub-Folders from the Filesystem

 JAVA

  • class Solution {
        public List<String> removeSubfolders(String[] folder) {
            Arrays.sort(folder);
            List<String> ans = new ArrayList<>();
            ans.add(folder[0]);
            for (int i = 1; i < folder.length; ++i) {
                int m = ans.get(ans.size() - 1).length();
                int n = folder[i].length();
                if (m >= n
                    || !(ans.get(ans.size() - 1).equals(folder[i].substring(0, m))
                        && folder[i].charAt(m) == '/')) {
                    ans.add(folder[i]);
                }
            }
            return ans;
        }
    }

C++

  • class Solution {
    public:
        vector<string> removeSubfolders(vector<string>& folder) {
            sort(folder.begin(), folder.end());
            vector<string> ans = {folder[0]};
            for (int i = 1; i < folder.size(); ++i) {
                int m = ans.back().size();
                int n = folder[i].size();
                if (m >= n || !(ans.back() == folder[i].substr(0, m) && folder[i][m] == '/')) {
                    ans.emplace_back(folder[i]);
                }
            }
            return ans;
        }
    };

Comments