我有我需要将所有找到共同的唯一子(实际路径),在他们最小长度的字符串列表清单的所有常见的最长子。例如:如何找到字符串
/a/b/c
/a/b
/a
/d/e/f
/d/e
/g/h
对于该输入,我需要以下结果:
/a
/d/e
/g/h
正如所看到的,我需要与具有唯一前缀的最小长度的路径(或子串)。/a是以/ a开头的所有路径的最小子字符串。/d/e是以/ d/e开头的所有路径的最小子字符串。/g/h也是一样。
这样做的实际应用发现,有它一定的文件,以进一步分析它们的路径树的所有根。考虑下面的例子:
/a/b/c/index.html
/a/b/index.html
/a/index.html
/d/E/F /index.html
/d/e/index.html
/g/h/index.html
比方说,我想有包含index.html文件的最顶层(以根的方式)路径。因此,我想要“/a/index.html”,“/d/e/index.html”和“/g/h/index.html”。
任何想法? “简单”最长的公共子串问题有很多理论和实例,但我还没有找到找到有效找到所有常见最长子串的解决方案。
用伪码解决方案将不胜感激。
最长子总是将是该组中的一员?而且,你在用什么语言? (你可以为它添加一个标签。)而且,我不明白为什么'/ g/h'会成为输出的一部分。 –
从你的例子中,我假设你需要像覆盖整个列表的最小的一组子表达式。它是否正确? – biziclop
如果您考虑所有输入项目,您是否在讨论3个不同的输入及其相应的输出,那么没有共同的子字符串? – Aaron