मान लीजिए हमारे पास दो स्ट्रिंग्स s और t हैं। हम merge नामक एक स्ट्रिंग बनाना चाहते हैं: जब तक s या t नॉन-खाली हैं, निम्नलिखित विकल्पों में से एक चुनें:
- यदि
sनॉन-खाली है, तोsका पहला वर्णmergeमें जोड़ें और इसेsसे हटा दें। - यदि
tनॉन-खाली है, तोtका पहला वर्णmergeमें जोड़ें और इसेtसे हटा दें।
अंत में, हमें लेक्सिकोग्राफिकली सबसे बड़ा मर्ज ढूंढना है जो हम बना सकते हैं।
उदाहरण के लिए, यदि इनपुट है s = "zxyxx", t = "yzxxx", तो आउटपुट "zyzxyxxxxx" होगा।
समाधान के चरण
a := 0,b := 0merge := ""(खाली स्ट्रिंग)W1 := len(s)W2 := len(t)while a < W1 and b < W2:- यदि
s[a:] > t[b:], तो:merge := merge + s[a]a := a + 1
- अन्यथा:
merge := merge + t[b]b := b + 1
- यदि
merge + s[a:] + t[b:]वापस करें
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
def solve(s, t):
a = b = 0
merge = ""
W1 = len(s)
W2 = len(t)
while a < W1 and b < W2:
if s[a:] > t[b:]:
merge += s[a]
a += 1
else:
merge += t[b]
b += 1
return merge + s[a:] + t[b:]
s = "zxyxx"
t = "yzxxx"
print(solve(s, t))
इनपुट
"zxyxx", "yzxxx"
आउटपुट
zyzxyxxxxx