题目描述
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:
输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
# -*- coding:utf-8 -*-
from itertools import permutations
class Solution:
def Permutation(self, ss):
if len(ss)==0:
return []
alist=list(ss)
p=[]
for i in permutations(alist):
t=''.join(i)
p.append(t)
return sorted(list(set(p)))
class Solution:
def permutation(self, s: str) -> List[str]:
c, res = list(s), []
def dfs(x):
if x == len(c) - 1:
res.append(''.join(c)) # 添加排列方案
return
dic = set()
for i in range(x, len(c)):
if c[i] in dic: continue # 重复,因此剪枝
dic.add(c[i])
c[i], c[x] = c[x], c[i] # 交换,将 c[i] 固定在第 x 位
dfs(x + 1) # 开启固定第 x + 1 位字符
c[i], c[x] = c[x], c[i] # 恢复交换
dfs(0)
return res
本文深入探讨了字符串全排列的算法实现,通过Python代码详细解释了如何生成一个字符串的所有可能排列,包括处理字符重复的情况。文章提供了两种方法:一种利用Python标准库itertools的permutations函数,另一种则是自定义递归函数实现,旨在帮助读者理解全排列背后的逻辑。
800

被折叠的 条评论
为什么被折叠?



