"""
设计:Python程序设计
作者:初学者
日期:2022年 03月 23日
"""
# 例98 字符串的不同排列
# 1.问题描述
# 给定一个字符串,找出它的不同排列。
# 2.问题示例
# 输入"abb",输出["abb","bab","bba"]。输入"aabb",输出["aabb","abab","baba","bbaa","abba","baab"]
# 3.代码实现
class Solution:
# 参数str:一个字符串
# 返回值:所有排列
def str_arrang(self, str):
result = []
if str == "":
return [""]
re = list(str)
re.sort()
while True:
result.append(''.join(re))
re = self.nextarrang(re)
if re is None:
break
return result
def nextarrang(self, num):
n = len(num)
i = n - 1
while i >= 1 and num[i - 1] >= num[i]:
i -= 1
if i == 0:
return None
j = n - 1
while j >= 0 and num[j] <= num[i - 1]:
j -= 1
num[i - 1], num[j] = num[j], num[i - 1]
num[i:] = num[i:][::-1]
return num
# 主函数
if __name__ == '__main__':
s = Solution()
s1 = "aabb"
ans = s.str_arrang(s1)
print("输入:", s1)
print("输出:", ans)
字符串的不同排列
于 2022-03-23 20:14:40 首次发布