我有大约10K这样的分层字符串。它们最多可以有10到12级的层次结构(/)。
/a/b/c
/a/b/d
/e/b/c
对于每个级别i,我想计算层级路径直到级别i的分布。因此对于上述情况,它将是这样的:
level 0:
/a 0.67
/e 0.33
level 1:
/a/b 0.67
/e/b 0.33
level 2:
/a/b/c 0.33
/a/b/d 0.33
/e/b/c 0.33
如何有效地处理10K字符串,最多10-12级。这必须是一个非常常见的字符串操作算法,但我忘记了正确的名称。感谢。
答案 0 :(得分:0)
创建一个字典(地图),该字典由字符串名称编制索引,并包含一个计数。
对于每个字符串,将其拆分为路径分隔符' /'。然后,从空白字符串开始,将每个段添加到字符串并增加映射中的计数。看起来像这样:
for each path string
split path into segments
newPath = ''
for each segment
add to newpath
increment count of newpath occurrences in dictionary
end
end
完成后,您有一个子路径和数字列表。在您的示例中,您有:
a,2
a/b,2
a/b/c,1
a/b/d,1
e,1
e/b,1
e/c,1
现在你所要做的就是浏览地图并将计数除以路径字符串的总数:
for each item in dictionary
output key, count/string_count
在这种情况下,string_count为3,因为这是您提供的原始字符串数。
如果处理所有10K字符串且最多有12个层次结构,我会感到非常惊讶。