分层字符串的频率分布

时间:2017-05-22 17:47:10

标签: algorithm

我有大约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级。这必须是一个非常常见的字符串操作算法,但我忘记了正确的名称。感谢。

1 个答案:

答案 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个层次结构,我会感到非常惊讶。