Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรม Python เพื่อพิมพ์การเรียงสับเปลี่ยนทั้งหมดของสตริงใน Lexicographic Order โดยไม่ต้องเรียกซ้ำ


เมื่อจำเป็นต้องพิมพ์การเรียงสับเปลี่ยนทั้งหมดของสตริงในลำดับพจนานุกรมโดยไม่ต้องใช้การเรียกซ้ำ จะมีการกำหนดเมธอดซึ่งรับสตริงเป็นพารามิเตอร์ ใช้การวนซ้ำ '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("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' ซึ่งรับสตริงเป็นพารามิเตอร์

  • มันใช้วิธีแฟกทอเรียลและวนซ้ำผ่านแฟกทอเรียลของสตริง

  • เปรียบเทียบสตริงที่กลับด้านและสตริงเดิม

  • ทำการสลับอย่างง่ายเสร็จสิ้น

  • นอกเมธอด มีการกำหนดสตริงและแสดงบนคอนโซล

  • ก็จะถูกจัดเรียง

  • เมธอดนี้เรียกโดยการส่งผ่านสตริงนี้

  • เอาต์พุตจะแสดงบนคอนโซล