【发布时间】:2012-04-05 12:24:45
【问题描述】:
我有一大串字符串。我想将字符串分成子集,这样:
- 子集中的每个项目共享 1 个或多个连续字符。
- 定义子集的共享连续字符对于子集集是唯一的(即,共享字符足以定义与其他子集互斥关系的字符串子集)。
- 子集的大小大致相同。
- 生成的子集集是满足上述标准所需的最小子集数。
例如给定以下一组名称:
艾伦、拉里、阿尔弗雷德、芭芭拉、阿尔方斯、卡尔
我可以将这个集合分成大小相等的两个子集。由连续字符“AL”定义的子集 1 将是
艾伦、阿尔弗雷德、阿尔方斯
由连续字符 ar 定义的子集 2 将是
拉里、芭芭拉、卡尔。
我正在寻找一种可以对任意字符串集执行此操作的算法。子集的结果集不必等于 2,但它应该是最小集,并且结果子集应该近似相等。
艾略特
【问题讨论】:
-
对于子集,连续字符是否总是必须在成员字符串的开头?
-
没有。连续字符可以在字符串中的任何位置。