Python 程序使用递归按字典顺序打印字符串的所有排列

pythonserver side programmingprogramming更新于 2023/12/23 7:39:00

当需要使用递归按字典顺序打印字符串的所有排列时,会定义一种方法,该方法使用‘for’循环遍历元素序列,并使用‘join’方法连接元素。

以下是同样的演示 −

示例

from math import factorial
def lexicographic_permutation_order(s):
   my_sequence = list(s)
   for _ in range(factorial(len(my_sequence))):
      print(''.join(my_sequence))
      next = next_in_permutation(my_sequence)

      if next is None:
         my_sequence.reverse()
      else:
         my_sequence = next

def next_in_permutation(my_sequence):
   if len(my_sequence) == 0:
      return None
   next = next_in_permutation(my_sequence[1:])
   if next is None:
      my_sequence[1:] = reversed(my_sequence[1:])
      q = 1
      while q < len(my_sequence) and my_sequence[0] > my_sequence[q]:
         q += 1
      if q == len(my_sequence):
         return None
      my_sequence[0], my_sequence[q] = my_sequence[q], my_sequence[0]
      return my_sequence
   else:
      return [my_sequence[0]] + next

my_input = input('输入一个字符串 : ')
print("字符串为:")
print(my_input)
print("正在调用该方法...")
lexicographic_permutation_order(my_input)

输出

输入一个字符串 : hey
该字符串为 :
hey
正在调用该方法...
hey
hye
yeh
yhe
hey
hye

解释

  • 已导入所需包。

  • 定义了一个名为 ‘lexicographic_permutation_order’ 的方法,可帮助查找元素的字典顺序。

  • 方法 ‘next_in_permutation’帮助确定字符串中的下一个排列。

  • 用户输入一个字符串,并显示在控制台上。

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

  • 输出显示在控制台上。


相关文章