Python 程序按字典顺序打印字符串的所有排列(不使用递归)
pythonserver side programmingprogramming更新于 2023/12/23 8:20:00
当需要按字典顺序打印字符串的所有排列(不使用递归)时,定义了一个方法,该方法以字符串为参数。它使用一个简单的‘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("字符串正在排序") my_string.sort() lex_permutation(my_string)
输出
字符串是 bhd 字符串正在排序 bdh bhd dbh dhb hbd hdb
解释
已导入所需包。
名为 ‘lex_permutation’ 的方法被定义为以字符串为参数。
它使用阶乘方法并迭代字符串的阶乘。
比较反转的字符串和原始字符串。
进行了简单的交换。
在方法之外,定义字符串,并显示在控制台上。
然后对其进行排序。
通过传递此字符串来调用该方法。
输出显示在控制台上。