मान लीजिए हमारे पास दो strings 'a' और 'b' और एक string 'merge' है। Task है string 'merge' को 'a' और 'b' के characters से इस तरह fill करना कि:
- यदि string 'a' non-empty है, तो string 'a' से first character remove करें और string 'merge' में copy करें।
- यदि string 'b' non-empty है, तो string 'b' से first character remove करें और string 'merge' में copy करें।
- यदि strings 'a' और 'b' non-empty हैं, तो string 'a' से first characters remove करें और string 'merge' में copy करें और फिर string 'b' से first character (यदि कोई हो) remove करें और string 'merge' में copy करें।
- Characters को दोनों strings से lexicographically remove करें, जिसका मतलब है, यदि string 'a' string 'b' से greater है, तो string 'a' से character remove करें और फिर string 'b' से।
- String 'merge' return करें।
उदाहरण के लिए
Input-1:
a = "bacaa" b = "abcaa"
Output:
babcacaaaa
व्याख्या:
चूंकि दिया गया string 'a' lexicographically string 'b' से greater है, हम string 'a' से first character extract करेंगे, यानी "b" और फिर string 'b' से। Extract करने के बाद, string "babcacaaaa" बनेगी।
Problem हल करने का दृष्टिकोण
इस problem को हल करने का recursive approach यह है कि हम string 'a' और string 'b' के प्रत्येक character को extract करेंगे और check करेंगे यदि string 'a' के characters lexicographically दूसरे string से greater हैं और finally string 'merge' में concatenate करेंगे।
हम प्रत्येक character के substring को कुछ positions के बाद ढूंढेंगे और 'merge' में concatenate करेंगे यदि यह दूसरे string से lexicographically greater है।
- दो input strings 'a' और 'b' लें।
- एक recursive string function concatenateLargest(string a, string b) दो strings को input के रूप में लेता है और concatenation के बाद largest string return करता है, यानी (string 'a' + string 'b')।
- यदि 'a > b', तो string 'a' को position '0' से split करें और string 'a' से output return करें।
- यदि 'a < b', तो string 'b' को position '0' से split करें और string 'b' से output return करें।
- Concatenated string return करें।
उदाहरण
def concatenateLargest(a, b):
ans = ""
while a and b:
if a > b:
ans = a[0]
a = a[1:]
else:
ans = b[0]
b = b[1:]
ans = a
ans = b
return ans
a = "bacaa"
b = "abcaa"
print(concatenateLargest(a, b))
उपरोक्त code चलाने से output generate होगा:
आउटपुट
bacabcaaaa
दो strings "bacaa" और "abcaa" दिए गए problem के अनुसार merge करने के बाद "bacabcaaaa" बन जाएंगी।