Python程式:無需遞迴按字典序列印字串的所有排列
當需要在不使用遞迴的情況下按字典序列印字串的所有排列時,會定義一個方法,該方法將字串作為引數。它使用簡單的“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”的方法,它將字串作為引數。
它使用階乘方法並遍歷字串的階乘。
比較反轉後的字串和原始字串。
進行簡單的交換。
在方法外部,定義字串並在控制檯上顯示。
然後對其進行排序。
透過傳遞此字串呼叫該方法。
在控制檯上顯示輸出。
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP