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