// leetcode 1233 前缀字典树
// 建个前缀字典树,在文件末尾添加'/'当结束
// 一道笔试题,但当时没写出来字典树,总是事后诸葛亮。。。
// 此模板自己演算,这种东西还是按照想法来,不要背,亲自演算,下次不慌
// 加油鸭
class Trie {
public:
bool isEnd;
Trie* alp[28];
Trie() {
isEnd = false;
fill(alp, alp + 28, nullptr);
}
static bool insert(Trie* &root, const string &s) {
Trie* p = root;
for (int i = 0; i < s.size(); i++) {
int c = s[i] - 'a';
if (s[i] == '/') c = 27;
if (p->isEnd)
return false;
if (p->alp[c] == nullptr) {
Trie* nxt = new Trie();
p->alp[c] = nxt;
}
p = p->alp[c];
}
p->isEnd = true;
return true;
}
};
class Solution {
public:
vector<string> removeSubfolders(vector<string>& folder) {
sort(folder.begin(), folder.end());
Trie* root = new Trie();
vector<string> ans;
for (int i = 0; i < folder.size(); i++) {
string s = folder[i];
s += '/';
if (Trie::insert(root, s)) {
ans.emplace_back(folder[i]);
}
}
return ans;
}
};
leetcode 1233 前缀字典树
最新推荐文章于 2023-12-22 19:09:18 发布