Q:编写一个递归函数,将一个字符串作为输入,并找出该字符串中所有可能的字符排序方式;
①从键盘输入字符串,以回车或空格结束。输入结束后,程序自动显示所有无重复的可能的排序结果,每行一个。最后一行输出排序结果的个数。 ②附加任务(供参考选做):保证输出结果按字母表升序排列,不计大小写。
import numpy
abc=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
def St(n):
global ans
global cnt
if n==l:
for t in range(l):
print(ans[t],end='')
cnt+=1
print("")
for temp in abc:
if dic[temp]>0:
dic[temp]-=1
ans[n]=temp
n+=1
St(n)
n-=1
dic[temp]+=1
elif dic[temp.upper()]>0:
dic[temp.upper()]-=1
ans[n]=temp.upper()
n+=1
St(n)
n-=1
dic[temp.upper()]+=1
return
str=list(input("请输入您的字符串"))
l=len(str)
ans={}
dic={}
for temp in abc:
dic[temp]=0
dic[temp.upper()]=0
for i in range(l):
dic[str[i]]+=1
lendic=len(dic)
cnt=0
St(0)
print("不计大小写全排列个数为",cnt)