【Leetcode1233】删除子文件夹
https://leetcode-cn.com/problems/remove-sub-folders-from-the-filesystem/comments/
愚蠢的做法,但是学了字典树。
class Solution {
public:
vector<string> ans;
struct Trie{
int size_of_tree=0;int ch[400000][30],val[400000]={0};
void init()
{
size_of_tree=1;
memset(ch[0],0,sizeof(ch[0]));
}
void insert(string ss)
{
ss+='/';
int l=ss.size(),now=0;
for(int i=0;i<l;i++)
{
int index;
if(ss[i]=='/')index=26;
else index=ss[i]-'a';
if(!ch[now][index])
{
memset(ch[size_of_tree],0,sizeof(ch[size_of_tree]));
ch[now][index]=size_of_tree;
size_of_tree++;
}
now=ch[now][index];
}
val[now]=1;
}
}tree;
void count(int node_index,string s)
{
for(int i=0;i<27;i++)
{
string tmps=s;
int next_i=tree.ch[node_index][i];
if(next_i)
{
if(i==26)tmps+='/';
else tmps+=i+'a';
if(tree.val[next_i])
{
string ansstr;
int ls=tmps.size();
for(int j=0;j<ls-1;j++)
{
ansstr+=tmps[j];
}
ans.push_back(ansstr);
}
else
{
count(next_i,tmps);
}
}
}
return;
}
vector<string> removeSubfolders(vector<string>& folder) {
tree.init();
int ll=folder.size();
for(int i=0;i<ll;i++)
{
tree.insert(folder[i]);
}
string start;
count(0,start);
return ans;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理