无需递归即可按字典顺序打印字符串的所有排列的 Python 程序
当需要在不使用递归的情况下按字典顺序打印字符串的所有排列时,定义了一种以字符串为参数的方法。它使用一个简单的“for”循环来遍历字符串元素并使用“while”条件来检查某些约束。
以下是相同的演示-
示例
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("字符串是 ") print(my_string) my_string = list(my_string) print("字符串是 being sorted") my_string.sort() lex_permutation(my_string)输出结果
字符串是 bhd 字符串是 being sorted bdh bhd dbh dhb hbd hdb
解释
导入所需的包。
定义了一个名为“lex_permutation”的方法,它将字符串作为参数。
它使用阶乘方法并遍历字符串的阶乘。
比较反转的字符串和原始字符串。
一个简单的交换就完成了。
在方法之外,字符串被定义,并显示在控制台上。
然后对其进行排序。
通过传递此字符串来调用该方法。
输出显示在控制台上。