เราได้รับสตริงที่เข้ารหัส และเราต้องประมวลผลผ่านฟังก์ชันที่คืนค่าสตริงที่ถอดรหัสแล้ว
กฎการเข้ารหัสคือ:
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