मान लीजिए कि हमारे पास एक स्ट्रिंग है, यह एक लंबी स्ट्रिंग को एन्कोड कर रहा है। s को n(t) के संयोजन के रूप में दर्शाया गया है, n(t) t, n बार के संयोजन का प्रतिनिधित्व करता है, और t या तो एक नियमित स्ट्रिंग है या यह पुनरावर्ती रूप से एक और एन्कोडेड स्ट्रिंग है। हमें s का डिकोडेड संस्करण खोजना होगा।
इसलिए, यदि इनपुट s ="3(pi)2(3(am))0(f)1(u)" जैसा है, तो आउटपुट "pipipiamamamamamamu"
होगाइसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
मैं :=0
-
एक फ़ंक्शन को परिभाषित करें parse() । इसमें लगेगा
-
उत्तर :=एक नई सूची
-
जबकि मैं
-
अगर s[i] एक अंक है, तो
-
घ :=0
-
जबकि s[i] अंक है, करें
-
d :=10 * d + s का पूर्णांक भाग [i]
-
मैं :=मैं + 1
-
-
मैं :=मैं + 1
-
खंड:=पार्स ()
-
मैं :=मैं + 1
-
खंड d बार उत्तर में डालें
-
-
अन्यथा,
-
उत्तर के अंत में s[i] डालें
-
मैं :=मैं + 1
-
-
-
उत्तर की वस्तुओं में शामिल होने के बाद वापसी स्ट्रिंग
-
मुख्य विधि से वापसी पार्स ()
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
class Solution: def solve(self, s): i = 0 def parse(): nonlocal i ans = [] while i < len(s) and s[i] != ")": if s[i].isdigit(): d = 0 while s[i].isdigit(): d = 10 * d + int(s[i]) i += 1 i += 1 segment = parse() i += 1 ans.extend(segment for _ in range(d)) else: ans.append(s[i]) i += 1 return "".join(ans) return parse() ob = Solution() s = "3(pi)2(3(am))0(f)1(u)" print(ob.solve(s))
इनपुट
"3(pi)2(3(am))0(f)1(u)"
आउटपुट
pipipiamamamamamamu