从 Vec <String>构建 UrlTree



我需要使url树结构,像一个站点地图。输入:Vec - url列表期望输出:具有url的嵌套层次结构的结构,从根到端点。

它是已经存在的板条箱还是我需要自己制作?

输入:

{
"https://exapmle.com",
"https://exapmle.com/aa",
"https://exapmle.com/ab",
"https://exapmle.com/v",
"https://exapmle.com/zac",
"https://exapmle.com/zac/acf",
"https://exapmle.com/zac/acf/adr",
"https://exapmle.com/zac/axx"
}

输出:

UrlTree {
root: "https://exapmle.com",
Nodes: {
{
node: "aa",
Nodes: None,
},
{
node: "ab",
Nodes: None,
},
{
node: "v",
Nodes: None,
},
{
node: "zac",
Nodes: {
{
node: "acf",
Nodes: {
node: "adr",
Nodes: None,
}   
},
{
node: "axx",
Nodes: None,
}
}
}
}
}

我想你必须自己编写一些代码。虽然您可以使用基数trie,正如Sven Marnach所提到的,但您可能会遇到这样的问题:它可能会拆分文件夹名称,而不仅仅是/。Abc/df和abd/df将保存为(an, c/df, d/df)。

如果你自己做一些东西,你必须问自己,你的输入大小是多大,你的vec的长度是多少,你的代码需要有多高性能?

如果性能不是那么大的问题,那么将找到一个struts向量。在每次插入时,只需检查当前文件夹是否已经在hashmap中,然后添加或向下走一步。在构建结构之后,将其映射到所需的输出。

如果你需要一些高性能的东西,你可以实现像基数树这样的东西,这个结构并不太难实现,因为你只需要关心分割"/"你可以用这个作为灵感https://www.cs.usfca.edu/~galles/visualization/RadixTree.html.

最新更新