题目描述
全排列
给定一个只包含大写英文字母的字符串S,要求你给出对S重新排列的所有不相同的排列数。
输入
输入一个长度不超过10的字符串S,我们确保都是大写的。
输出
输出S重新排列的所有不相同的排列数(包含自己本身)。
示例
- 输入:ABA, 输出:3
- 输入:ABCDEFGHHA, 输出:907200
考点
- 组合数学
- 哈希表/字典
- 字符串操作
- 递归
解题思路
解决该问题的主要思路是通过计算全排列的数量,然后对重复的字符进行除法来去除重复的排列。具体做法如下:
- 统计字符串中每个字符出现的次数。可以使用哈希表或者字典来完成这个任务。
- 使用公式n!(阶乘)计算全排列的总数量,n是字符串的长度。
- 对于每个出现次数超过1次的字符,用总排列数除以该字符出现次数的阶乘。这样可以去除因为这个字符的重复而导致的重复排列。</