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 mà không cần đệ 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 mà không sử dụng đệ quy, một phương thức được định nghĩa, lấy chuỗi đó làm tham số. Nó sử dụng một vòng lặp ‘for’ đơn giản để lặp qua các phần tử chuỗi và sử dụng điều kiện ‘while’ để kiểm tra các ràng buộc nhất định.

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

Ví dụ

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)

Đầu ra

The string is
bhd
The string is being sorted
bdh
bhd
dbh
dhb
hbd
hdb

Giải thích

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

  • Một phương thức có tên là ‘lex_permutation’ được xác định sẽ lấy chuỗi làm tham số.

  • Nó sử dụng phương pháp giai thừa và lặp qua giai thừa của chuỗi.

  • Chuỗi đảo ngược và chuỗi ban đầu được so sánh.

  • Việc hoán đổi đơn giản đã được thực hiện.

  • Bên ngoài phương thức, chuỗi được xác định và được hiển thị trên bảng điều khiển.

  • Sau đó, nó được sắp xếp.

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

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