当前位置:   article > 正文

【华为OD机试真题 python】全排列_给定一个只包含大写英文字母的字符串s,要求你给出对s重新排列的所有不相同的排列

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

题目描述:

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

如:S为ABA,则不同的排列有ABA、AAB、BAA三种。

解答要求

时间限制:5000ms, 内存限制:100MB


输入描述

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

输出描述

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


示例 1:

输入:ABA

输出: 3

示例 2:

输入: ABCDEFGHHA

输出:907200


  1. #解题1:排列首先想到itertools模块
  2. import itertools
  3. from itertools import combinations,permutations
  4. #permutations 连续返回由 iterable 元素生成长度为 r 的排列
  5. s=input().upper()
  6. new=[]
  7. for i in permutations(s,len(s)):
  8. if i not in new:
  9. new.append(i)
  10. print(len(new))
  11. #但是长度过大 不满足运行时间(需要修改算法)

修改算

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/1002962
推荐阅读
相关标签
  

闽ICP备14008679号