如果我有一个字符串(例如'AABC'),我该如何计算可能的唯一字符串数?
在这种情况下答案是12,但我怎么能用算法来解决这个问题呢?
我可以为'ABC'做这件事,但重复的角色会让我感到困惑。
我正在尝试用Python实现它
编辑:另外,我不打算生成所有可能的字符串,只计算数字。
答案 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”即可。