查找表示一组字符串的最小数量的子字符串

时间:2012-02-08 14:54:05

标签: string algorithm set

我想找到一组非重叠的子串,这些子串可以连接起来表示一组给定的字符串。假设这组给定的字符串是

abc0def
zabc1def
abc2defg

那么可以连接起来形成上面完整字符串集的最小的非重叠子串是

abc
def
0
1
2
g
z

澄清:通过非重叠,我的意思是该组的成员没有以相同的字符序列开始或结束。

1 个答案:

答案 0 :(得分:1)

使用字符串构建有向图,其中字符为顶点,弧线从字符指向下列字符。对于具有两个或更多个indegree的任何顶点,删除所有传入的弧。同样,对于那些具有两个或更多的outdegree的人,删除所有传出的弧。删除后,图表的其余组成部分是表示子串的路径图;只需按照路径构建子串。

您还需要为字符串的开头和结尾引入虚拟顶点。这避免了例如abcdebcd的问题。

相关问题