我需要进行以下分组:
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)下一个字符串对我们不仅彼此进行比较,而且与输出数组进行比较。如果输出中已经有字符串作为当前对中任何一个的子字符串,我们将转到下一个对。
这是最佳算法吗?