मान लीजिए, हमारे पास दो स्ट्रिंग्स हैं। हम उन स्ट्रिंग्स से लेक्सिकली मिनिमम स्ट्रिंग बनाना चाहते हैं। स्ट्रिंग बनाने के लिए हम दोनों स्ट्रिंग्स के पहले अक्षर की तुलना करते हैं और लेक्सिकली छोटे अक्षर को उनमें से एक स्ट्रिंग से निकालते हैं। टाई के मामले में यानी अक्षर समान हैं; हम पहले स्ट्रिंग से अक्षर निकालते हैं। हम इस प्रक्रिया को तब तक दोहराते हैं जब तक दोनों स्ट्रिंग्स खाली न हो जाएं। निर्मित मिनिमल स्ट्रिंग को लौटाना है।
उदाहरण के लिए, यदि इनपुट है input_1 = 'TUTORIALS', input_2 = 'POINT', तो आउटपुट होगा POINTTUTORIALS।
यदि हम दोनों स्ट्रिंग्स की तुलना करते हैं, तो हमें यह चरण-दर-चरण मिलता है:
TUTORIALS POINT TUTORIALS OINT = P TUTORIALS INT = PO TUTORIALS NT = POI TUTORIALS T = POIN TUTORIALS = POINT
चूंकि एक स्ट्रिंग खाली है, अब पूरी पहली स्ट्रिंग रिजल्टेंट मिनिमल स्ट्रिंग में रखी जाती है। तो, अंतिम स्ट्रिंग POINTTUTORIALS है।
समाधान दृष्टिकोण
दोनों स्ट्रिंग्स के अंत में सेंटिनल 'z' जोड़ें (ताकि तुलना काम करे)। दो पॉइंटर्स का उपयोग करके शेष सफ़िक्स की तुलना करें, छोटे सफ़िक्स से अक्षर लें। अंत में सेंटिनल हटाएं।
input_1 += "z",input_2 += "z"।temp_1 = 0,temp_2 = 0,res_str = ""।- जब
temp_1 < len(input_1)औरtemp_2 < len(input_2):- यदि
input_1[temp_1:] < input_2[temp_2:], तोres_str += input_1[temp_1],temp_1 += 1। - अन्यथा
res_str += input_2[temp_2],temp_2 += 1।
- यदि
- अंतिम सेंटिनल हटाएं:
res_str = res_str[:-1]। - शेष भाग जोड़ें।
पायथन कार्यान्वयन
def solve(input_1, input_2):
input_1 += "z"
input_2 += "z"
temp_1 = 0
temp_2 = 0
res_str = ""
while temp_1 < len(input_1) and temp_2 < len(input_2):
if input_1[temp_1:] < input_2[temp_2:]:
res_str += input_1[temp_1]
temp_1 += 1
else:
res_str += input_2[temp_2]
temp_2 += 1
res_str = res_str[:-1]
if temp_1 < len(input_1):
res_str += input_1[temp_1:-1]
if temp_2 < len(input_2):
res_str += input_2[temp_2:-1]
return res_str
print(solve('TUTORIALS', 'POINT'))
इनपुट
'TUTORIALS', 'POINT'
आउटपुट
POINTTUTORIALS