讨论/题目交流/🏆 第 159 场力扣周赛/
🏆 第 159 场力扣周赛

欢迎小伙伴们在这里交流分享你的参赛心得以及体验。【前往竞赛

image.png

缀点成线
删除子文件夹
替换子串得到平衡字符串
规划兼职工作

展开讨论

第二次参加,依然只过了两题……第二题我是“取巧”做的,利用题目测试用例的特点,先对字符串数组进行排序。一个文件夹若有子文件夹,则该子文件夹字符串一定排在父文件夹后面,所以利用两个索引一一比对,判断后者是否是前者的子串,如果是子串还需判断下子文件夹在子串后一个字符是否是‘/’(前一次没注意WA了),两者都是则为子文件夹,可以删去。

inline bool isChildFile(string& t, string& s) {
    for (int i = 0; i < t.size() && i < s.size(); ++i) {
        if (t[i] != s[i]) return false;
    }
    if (t[s.size()] != '/') return false;
    return true;
}

class Solution {
public:
    vector<string> removeSubfolders(vector<string>& folder) {
        if (folder.empty()) return vector<string>();

        sort(folder.begin(), folder.end());
        vector<string> ans;
        ans.push_back(folder[0]);
        int pre = 0;
        for (int i = 1; i < folder.size(); ++i) {
            if (!isChildFile(folder[i], folder[pre])) {
                ans.push_back(folder[i]);
                pre = i;
            }
        }
        return ans;
    }
};
展开全部 16 讨论