【100分】【组成最大数】

题目描述

全排列

给定一个只包含大写英文字母的字符串S,要求你给出对S重新排列的所有不相同的排列数。

输入

输入一个长度不超过10的字符串S,我们确保都是大写的。

输出

输出S重新排列的所有不相同的排列数(包含自己本身)。

示例

  1. 输入:ABA, 输出:3
  2. 输入:ABCDEFGHHA, 输出:907200

考点

  • 组合数学
  • 哈希表/字典
  • 字符串操作
  • 递归

解题思路

解决该问题的主要思路是通过计算全排列的数量,然后对重复的字符进行除法来去除重复的排列。具体做法如下:

  1. 统计字符串中每个字符出现的次数。可以使用哈希表或者字典来完成这个任务。
  2. 使用公式n!(阶乘)计算全排列的总数量,n是字符串的长度。
  3. 对于每个出现次数超过1次的字符,用总排列数除以该字符出现次数的阶乘。这样可以去除因为这个字符的重复而导致的重复排列。</

猜你喜欢

转载自blog.csdn.net/weixin_54707168/article/details/131972592
今日推荐