Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình Python để in tất cả các hoán vị của một chuỗi theo thứ tự Lexicographic bằng cách sử dụng đệ quy

Khi được yêu cầu in tất cả các hoán vị của một chuỗi theo thứ tự từ điển bằng cách sử dụng đệ quy, một phương thức được xác định, sử dụng vòng lặp 'for' để lặp lại chuỗi các phần tử và sử dụng phương thức 'nối' để nối các phần tử.

Dưới đây là minh chứng về điều tương tự -

Ví dụ

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('Enter a string : ')
print("The string is :")
print(my_input)
print("The method is being called...")
lexicographic_permutation_order(my_input)

Đầu ra

Enter a string : hey
The string is :
hey
The method is being called...
hey
hye
yeh
yhe
hey
hye

Giải thích

  • Các gói bắt buộc được nhập.

  • Một phương pháp có tên ‘lexicographic_permutation_order’ được xác định để giúp tìm thứ tự từ vựng của các phần tử.

  • Phương thức ‘next_in_permutation’ giúp xác định hoán vị tiếp theo trong chuỗi.

  • Một chuỗi được nhập bởi người dùng và được hiển thị trên bảng điều khiển.

  • Phương thức được gọi bằng cách chuyển chuỗi này dưới dạng tham số.

  • Đầu ra được hiển thị trên bảng điều khiển.