帮助制作算法

时间:2011-09-06 19:53:47

标签: string algorithm

  

可能重复:
  Generate all unique substrings for given string

有谁能告诉我如何解决这个问题?

我有一个字符串,其中包含一些值 “{1,2,3}”每个数字用逗号分隔 现在使用该字符串我需要生成一个新字符串...新字符串应该是这样的 “{},{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}”

这很容易做到,但我无法弄清楚如何使它与算法一起工作 任何人都可以解释我应该做些什么吗?

我不想要代码,只是解释如何做到这一点。 我在想递归...但我想不出办法

2 个答案:

答案 0 :(得分:2)

首先,你需要迭代整数0到N,其中N是字符串中的值的数量(让我们称之为迭代变量i)。对于每个i,您将在输入中生成包含iN个数字的所有集合。

例如,i == 0将生成{}i == 1将生成{1},{2},{3}等。

现在让我们假设i的值是固定的;这将让我们继续了解如何为每个迭代做些什么。显然我们需要某种嵌套循环,因为我们将为i的每个值生成多个(在一般情况下)输出值(例如,我们将在i == 1时生成3个集合,如图所示更早)。

这被称为{em>生成i N个{{1}}个项目的组合,并且有大量可用的文档。例如,请参阅Algorithm to return all combinations of k elements from n

答案 1 :(得分:0)

对于替代方法,将问题视为二进制问题。你的集合有三个元素,所以你需要三个二进制数字。集合中的每个成员可以在结果中存在(1)或不存在(0)。因此,您可以将所需结果映射到三位二进制数字:

000 -> {}
001 -> {3}
010 -> {2}
011 -> {2, 3}
100 -> {1}
101 -> {1, 3}
110 -> {1, 2}
111 -> {1, 2, 3}

生成从0(000)到7(111)的数字并从中提取所需的组合并不困难。