আমাদের একটি এনকোডেড স্ট্রিং দেওয়া আছে, এবং আমাদের সেটিকে একটি ফাংশন দিয়ে প্রসেস করতে হবে যেটি এর ডিকোডেড স্ট্রিং রিটার্ন করবে।
এনকোডিং রুল হলো −
n[encodedString], যেখানে স্কয়ার ব্র্যাকেটের ভেতরের encodedStringটি ঠিক n বার রিপিট হবে।
এবং n একটি পজিটিভ ইন্টিজার বলে গ্যারান্টি করা আছে।
আমরা অনুমান করতে পারি ইনপুট স্ট্রিং সবসময় বৈধ; কোনো এক্সট্রা হোয়াইটস্পেস নেই, স্কয়ার ব্র্যাকেটগুলো ভালোভাবে ফর্মড, ইত্যাদি।
উদাহরণস্বরূপ − ইনপুট যদি হয় −
const str = "3[a]2[bc]";
তবে আউটপুট হবে −
const output: "aaabcbc";
উদাহরণ
এটির কোড হবে −
const str = "3[a]2[bc]";
const helper = (str = '') => {
return str.replace(/(\d+\[\w+\])/gi, item => {
let match = /(\d+)\[(\w+)\]/.exec(item);
let repeat = parseInt(match[1]);
let pattern = match[2];
let result = "";
while(repeat-- > 0) {
result += pattern;
}
return result;
});
};
const decodeString = function(str) {
while(/\d+\[\w+\]/gi.test(str)) {
str = helper(str);
}
return str;
};
console.log(decodeString(str));
আউটপুট
কনসোলে আউটপুট হবে −
aaabcbc