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("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”的方法,它将字符串作为参数。
它使用阶乘方法并遍历字符串的阶乘。
比较反转后的字符串和原始字符串。
进行简单的交换。
在方法外部,定义字符串并在控制台上显示。
然后对其进行排序。
通过传递此字符串调用该方法。
在控制台上显示输出。
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP