如何根据相似性对包含文件路径的字符串进行分组?

时间:2019-01-16 23:19:47

标签: perl

我需要进行以下分组:

Input                                           | Output
------------------------------------------------+---------------------------------------
/opt/perl5.26.1/lib/5.26.1                      | /opt/perl5.26.1/lib/5.26.1
/opt/perl5.26.1/lib/5.26.1/warnings             | /opt/perl5.26.1/lib/site_perl/5.26.1
/opt/perl5.26.1/lib/site_perl/5.26.1/XML        | /foo/bar
/opt/perl5.26.1/lib/site_perl/5.26.1/Eval       | 
/opt/perl5.26.1/lib/site_perl/5.26.1/Class/Data |
/opt/perl5.26.1/lib/site_perl/5.26.1/FB3        |
/opt/perl5.26.1/lib/site_perl/5.26.1/HTML       |
/foo/bar/baz/qux
/foo/bar/bar
/foo/bar

分组必须基于分隔符(在我们的示例中为/)。我们也可以只拆分字符串。

请为我提供算法帮助,或给我一个指向CPAN上现成模块的链接。

P.S。我对此有所考虑:

1)我们循环输入字符串数组,在每个循环中我们使用两个字符串

2)查找字符串不同的索引

3)根据索引提取公共子字符串,将结果推送到输出数组

4)下一个字符串对我们不仅彼此进行比较,而且与输出数组进行比较。如果输出中已经有字符串作为当前对中任何一个的子字符串,我们将转到下一个对。

这是最佳算法吗?

0 个答案:

没有答案