मान लीजिए कि हमारे पास दो स्ट्रिंग्स s, t, और एक अन्य स्ट्रिंग r है, हमें यह जांचना है कि s और t के क्रम में वर्णों को मर्ज करके r प्राप्त करने का कोई तरीका है या नहीं।
इसलिए, यदि इनपुट s ="xyz" t ="mno" r ="xymnoz" जैसा है, तो आउटपुट ट्रू होगा, क्योंकि xymnoz को xyz और mno को इंटरलीव करके बनाया जा सकता है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
फ़ंक्शन को हल करें () परिभाषित करें। इसमें s, t, r लगेगा
-
अगर s, t और r खाली हैं, तो
-
सही लौटें
-
अगर r खाली है, तो
-
झूठी वापसी
-
-
-
-
अगर s खाली है, तो
-
सही लौटें जब t, r के समान हो, अन्यथा असत्य हो
-
-
यदि नहीं t गैर-शून्य है, तो
-
वापसी s r के समान है
-
-
अगर s[0], r[0] के समान है, तो
-
अगर हल (एस [सूचकांक 1 से अंत तक], टी, आर [सूचकांक 1 से अंत तक]) सत्य है, तो
-
सही लौटें
-
-
-
यदि t[0], r[0] के समान है, तो
-
अगर हल (एस, टी [सूचकांक 1 से अंत तक], आर [सूचकांक 1 से अंत तक]) सत्य है, तो
-
सही लौटें
-
-
-
झूठी वापसी
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, s, t, r): if not s and not t and not r: return True if not r: return False if not s: return t == r if not t: return s == r if s[0] == r[0]: if self.solve(s[1:], t, r[1:]): return True if t[0] == r[0]: if self.solve(s, t[1:], r[1:]): return True return False ob = Solution() s = "xyz" t = "mno" r = "xymnoz" print(ob.solve(s, t, r))
इनपुट
"xyz", "mno", "xymnoz"
आउटपुट
True