जब रीकर्सन का उपयोग किए बिना लेक्सिकोग्राफिक क्रम में स्ट्रिंग के सभी क्रमपरिवर्तन प्रिंट करने हों, तो एक विधि परिभाषित की जाती है जो स्ट्रिंग को पैरामीटर के रूप में लेती है। यह स्ट्रिंग एलिमेंट्स पर पुनरावृति करने के लिए एक साधारण '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("स्ट्रिंग है:")
print(my_string)
my_string = list(my_string)
print("स्ट्रिंग को सॉर्ट किया जा रहा है")
my_string.sort()
lex_permutation(my_string)
आउटपुट
स्ट्रिंग है: bhd स्ट्रिंग को सॉर्ट किया जा रहा है bdh bhd dbh dhb hbd hdb
व्याख्या
आवश्यक पैकेज आयात किए जाते हैं।
'lex_permutation' नामक एक विधि परिभाषित की जाती है जो स्ट्रिंग को पैरामीटर के रूप में लेती है।
यह फैक्टोरियल मेथड का उपयोग करती है और स्ट्रिंग के फैक्टोरियल के माध्यम से पुनरावृति करती है।
रिवर्स स्ट्रिंग और मूल स्ट्रिंग की तुलना की जाती है।
एक साधारण स्वैपिंग की जाती है।
विधि के बाहर, स्ट्रिंग परिभाषित की जाती है और कंसोल पर प्रदर्शित की जाती है।
इसे फिर सॉर्ट किया जाता है।
इस स्ट्रिंग को पास करके विधि को कॉल किया जाता है।
आउटपुट कंसोल पर प्रदर्शित होता है।