求該題目程式碼
輸入一個大小寫英文字串和一個數字n,以一個空格間隔,且n需小於等於字串的長度,字串中不得有空格且字元不得重複,字串長度不得超過8字元
輸出說明:
計算出對字串取n個字元的所有組合可能,組合內依原字串中字元順序排序,再對所有組合可能依字典順序排序後,依序以一個空格間隔輸出。
==============
Sample input 1:
ABCD 2
Sample output 1:
AB AC AD BC BD CD
==============
Sample input 2:
pekoPEKO 8
Sample output 2:
pekoPEKO
==============
Sample input 3:
pelican 3
Sample output 3:
can ean eca ecn eia eic ein ela elc eli eln ian ica icn lan lca lcn lia lic lin pan pca pcn pea pec pei pel pen pia pic pin pla plc pli pln
==============
Sample input 4:
Guavb 4
Sample output 4:
Gavb Guab Guav Guvb uavb
==============
Sample input 5:
DinoSaur 5
Sample output 5:
DSaur DiSar DiSau DiSur Diaur DinSa DinSr DinSu Dinar Dinau DinoS Dinoa Dinor Dinou Dinur DioSa DioSr DioSu Dioar Dioau Diour DnSar DnSau DnSur Dnaur DnoSa DnoSr DnoSu Dnoar Dnoau Dnour DoSar DoSau DoSur Doaur iSaur inSar inSau inSu
import itertools as it
s,n = input(">>>").split()
n = int(n)
res = it.combinations(s, n)
result = list(map(lambda x: ''.join(x), res))
result.sort()
print(' '.join(result))
'''
--result
>>>pelican 3
can ean eca ecn eia eic ein ela elc eli eln ian ica icn lan lca lcn lia lic lin pan pca pcn pea pec pei pel pen pia pic pin pla plc pli pln
'''
from itertools import combinations
try:
in_str = input("input string number:")
in_lst = in_str.split(" ")
work_str = in_lst[0]
work_num = int(in_lst[1])
work_set = list(set([x for x in work_str]))
work_list = [n for n in range(len(work_str))]
work_out = list(combinations(work_list, work_num))
if len(in_lst)>2:
print("输入不符合要求")
elif len(work_str)>8:
print("输入不符合要求")
elif len(work_str)<work_num:
print("输入不符合要求")
elif len(work_str)>len(work_set):
print("输入不符合要求")
else:
for w in work_out:
print("".join([work_str[n] for n in w]) , end=" ")
# print(work_str, work_num)
except Exception as e:
print('输入不符合要求')
顺序加个sort就好了
分别算出anscii然后再进行排序计算