使用递归以字典序打印字符串的所有排列的Python程序
当需要使用递归以字典序打印字符串的所有排列时,可以定义一个使用“for”循环迭代元素序列并使用“join”方法连接元素的方法。
以下是相同过程的演示 –
更多Python相关文章,请阅读:Python 教程
示例
from math import factorial
def lexicographic_permutation_order(s):
my_sequence = list(s)
for _ in range(factorial(len(my_sequence))):
print(''.join(my_sequence))
next = next_in_permutation(my_sequence)
if next is None:
my_sequence.reverse()
else:
my_sequence = next
def next_in_permutation(my_sequence):
if len(my_sequence) == 0:
return None
next = next_in_permutation(my_sequence[1:])
if next is None:
my_sequence[1:] = reversed(my_sequence[1:])
q = 1
while q < len(my_sequence) and my_sequence[0] > my_sequence[q]:
q += 1
if q == len(my_sequence):
return None
my_sequence[0], my_sequence[q] = my_sequence[q], my_sequence[0]
return my_sequence
else:
return [my_sequence[0]] + next
my_input = input('输入一个字符串:')
print("字符串是:")
print(my_input)
print("正在调用方法...")
lexicographic_permutation_order(my_input)
输出
输入一个字符串:hey
字符串是:
hey
正在调用方法...
hey
hye
yeh
yhe
hey
hye
解释
-
导入所需的包。
-
定义了一个名为“lexicographic_permutation_order”的方法,用于查询元素的字典序。
-
定义了一个名为“next_in_permutation”的方法,用于确定字符串中的下一个排列。
-
用户输入一个字符串,并显示在控制台上。
-
通过将该字符串作为参数传递进行了调用方法。
-
输出在控制台上显示。