【发布时间】:2012-02-08 14:54:05
【问题描述】:
我想找到一组不重叠的子字符串,它们可以连接起来代表一组给定的字符串。假设这组给定的字符串是
abc0def
zabc1def
abc2defg
那么可以连接起来形成上述完整字符串集的最小非重叠子字符串集是
abc
def
0
1
2
g
z
澄清一下:不重叠是指集合中没有任何成员以相同的字符序列开始或结束。
【问题讨论】:
我想找到一组不重叠的子字符串,它们可以连接起来代表一组给定的字符串。假设这组给定的字符串是
abc0def
zabc1def
abc2defg
那么可以连接起来形成上述完整字符串集的最小非重叠子字符串集是
abc
def
0
1
2
g
z
澄清一下:不重叠是指集合中没有任何成员以相同的字符序列开始或结束。
【问题讨论】:
使用字符串构建有向图,以字符为顶点,从字符指向后面的字符的弧。对于任何具有两个或更多入度的顶点,删除所有传入的弧。同样,对于那些出度为两个或更多的,删除所有的出弧。删除这些后,图的其余组件是表示子字符串的路径图;只需按照路径构建子字符串。
您还需要为字符串的开头和结尾引入虚拟顶点。这避免了 abcde 和 bcd 等问题。
【讨论】: