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