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’ 的方法被定义为以字符串为参数。

  • 它使用阶乘方法并迭代字符串的阶乘。

  • 比较反转的字符串和原始字符串。

  • 进行了简单的交换。

  • 在方法之外,定义字符串,并显示在控制台上。

  • 然后对其进行排序。

  • 通过传递此字符串来调用该方法。

  • 输出显示在控制台上。


相关文章