【发布时间】:2015-08-01 06:03:23
【问题描述】:
你能告诉我如何获得三个字符串的所有可能组合:Al, Bob, Charlie?
所以输出看起来像:Al+Bob+Charlie、Al+Bob、Al+Charlie、Bob+Charlie 等?
我知道如何进行字符组合,但不知道如何转换为字符串。
编辑:这里有一个 c# 代码可以进行递归排列:http://www.codeproject.com/Articles/37215/Permutations-in-C-Using-Recursion。我发现其他语言也有类似的情况。但是所有这些都与字符有关。我从哪里开始?
这是我读过的一本书(用python):
def anagrams(s):
if s == "":
return [s]
else:
ans = []
for w in anagrams(s[1:1]):
for pos in range(len(w)+1):
ans.append(w[:pos]+s[0]+w[pos:])
return ans
我知道递归需要一个基本案例。
编辑 2:我得到了答案,但我不知道它是如何工作的,我正在寻找可以在大多数语言中应用而不必依赖于了解模块的东西。
编辑 3:当前答案给了我空白输出。所以不工作。
【问题讨论】:
-
展示你将如何处理字符,有人会帮你修改字符串。
-
为什么在给我机会编辑和提供您要求的内容之前投了反对票?
-
那不是我 - 在那里,让我为你投票 :)
-
我很抱歉。有些人可以这么紧张
-
如果他们只处理字母或数字,这有什么关系吗?您可以创建一个字典,其中字母为键,字符串为值。从那里开始,一旦你有了字母的组合/排列,你就可以简单地查找相应的字符串或任何你喜欢的对象。如果您曾经一次又一次地对给定级别使用组合/排列,您可以这样做一次并将结果保存在数据库中,使用(C、3、5 等)作为组过滤器值。
标签: combinations