Python程序以字典顺序打印字符串的所有排列,无需使用递归

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”的函数,该函数将字符串作为参数。

  • 使用阶乘方法来遍历字符串的阶乘。

  • 将翻转后的字符串和原始字符串进行比较。

  • 简单的交换。

  • 在函数外,定义并在控制台上显示字符串。

  • 对其进行排序。

  • 通过传递此字符串调用函数。

  • 在控制台输出。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程