实时生成字符串的唯一排列

时间:2018-06-01 20:15:49

标签: python python-3.x itertools

我正在处理脚本的一部分,该脚本会在实时打印时生成字符串的排列:

perms = itertools.permutations(inputstring)
for i, perm in enumerate(perms, 1):
    word = "".join(perm)
    wordcount = wordcount + 1
    print("%s is word #%d" % (word, wordcount))

这很好用,除非给定一个带有重复字符的字符串,它会生成重复的排列。例如,如果给出输入字符串“aa”,它会打印两个排列,“aa”和“aa”,这显然是相同的。我通过将代码编辑为:

来阻止它打印这些重复项
perms = itertools.permutations(inputstring)
for i, perm in enumerate(perms, 1):
    word = "".join(perm)
    if word not in permcheck:
      permcheck.append(word)
      wordcount = wordcount + 1
      print("%s is word #%d" % (word, wordcount))

但这仍然意味着产生大量无用的重复排列,这会降低效率。有没有办法解决重复问题,同时仍然实时打印而不牺牲效率?

0 个答案:

没有答案