Python程序以字典顺序打印字符串的所有排列,无需使用递归
当需要以字典顺序打印字符串的所有排列而不使用递归时,定义一个函数,将字符串作为参数。它使用一个简单的“for”循环来迭代字符串元素,并使用“while”条件来检查一定的限制。
以下是演示示例 –
更多Python相关文章,请阅读:Python 教程
示例
from math import factorial
def lex_permutation(my_string):
for i in range(factorial(len(my_string))):
print(''.join(my_string))
i = len(my_string) - 1
while i > 0 and my_string[i-1] > my_string[i]:
i -= 1
my_string[i:] = reversed(my_string[i:])
if i > 0:
q = i
while my_string[i-1] > my_string[q]:
q += 1
temp_variable = my_string[i-1]
my_string[i-1]= my_string[q]
my_string[q]= temp_variable
my_string = 'bhd'
print("The string is ")
print(my_string)
my_string = list(my_string)
print("The string is being sorted")
my_string.sort()
lex_permutation(my_string)
输出
The string is
bhd
The string is being sorted
bdh
bhd
dbh
dhb
hbd
hdb
解释
-
导入所需的包。
-
定义了一个名为“lex_permutation”的函数,该函数将字符串作为参数。
-
使用阶乘方法来遍历字符串的阶乘。
-
将翻转后的字符串和原始字符串进行比较。
-
简单的交换。
-
在函数外,定义并在控制台上显示字符串。
-
对其进行排序。
-
通过传递此字符串调用函数。
-
在控制台输出。