字符串重排:给定一个只包含大写英文字母的字符串S,要求你给出对S重新排列的所有不相同的排列数。如:S为ABA,则不同的排列有ABA、AAB、BAA三种。
示例 1: 输入: "ABA" 输出: 3示例 2: 输入: "AABBCC" 输出: 90
给个解题思路就行
收起
以前写过一个现成的递归求所有排列组合,直接套用了,相信一定不是最优解,抛砖引玉:
def all_q(n): if len(n) == 1:return n q = [] for i in n: b = n[:] b.remove(i) for j in all_q(b): q.append(i+j) return q n = list(input()) print(len(set(all_q(n))))
报告相同问题?