একটি স্ট্রিং s দেওয়া আছে যা n(t) ফরম্যাটে এনকোডেড। এখানে n(t) মানে t স্ট্রিংটি n বার রিপিট। t বা तो সাধারণ স্ট্রিং হতে পারে অথবা আবার নেস্টেড এনকোডেড স্ট্রিং। ডিকোডেড স্ট্রিং বের করতে হবে।
উদাহরণ: s = "3(pi)2(3(am))0(f)1(u)" → আউটপুট "pipipiamamamamamamu"।
সমাধানের ধাপসমূহ (রিকার্সিভ ডিসেন্ট পার্সিং)
i := 0 (গ্লোবাল ইনডেক্স)।
parse()ফাংশন ডিফাইন করুন:ans = []।যখন
i < len(s)এবংs[i] != ')':যদি
s[i]ডিজিট হয়: পুরো নম্বরdপড়ুন,i++( '(' স্কিপ),segment = parse(),i++( ')' স্কিপ),segmentকেdবারans-এ এক্সটেন্ড করুন।অন্যথায়:
ans.append(s[i]),i++।
"".join(ans)রিটার্ন করুন।
parse()কল করে ফলাফল পান।
পাইথন কোড উদাহরণ
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 # skip '('
segment = parse()
i += 1 # skip ')'
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