计算可以从字符串中生成的唯一字符串的数量

时间:2014-11-05 23:23:29

标签: python string

如果我有一个字符串(例如'AABC'),我该如何计算可能的唯一字符串数?

在这种情况下答案是12,但我怎么能用算法来解决这个问题呢?

我可以为'ABC'做这件事,但重复的角色会让我感到困惑。

我正在尝试用Python实现它

编辑:另外,我不打算生成所有可能的字符串,只计算数字。

2 个答案:

答案 0 :(得分:2)

您可以浏览所有排列并使用itertools模块计算唯一排列

import itertools

string = "AABC"
count = len(set(itertools.permutations(string)))
print(count)

但是因为你只需要计数,你可以更轻松地做到这一点:

import math
import collections

string = "AABC"

chars = collections.Counter(string)
denominator = reduce(lambda x,y: x * math.factorial(y), chars.values(), 1)
count = math.factorial(len(string)) / denominator
print(count)

答案 1 :(得分:0)

您可以使用itertools模块执行此操作。

打开你的python解释器。

import itertools
for unique in itertools.permutations("AABC"):
    print "".join(unique)

只需改变“AABC”即可。