เราได้รับสตริงที่เข้ารหัส และเราจำเป็นต้องประมวลผลผ่านฟังก์ชันที่ส่งคืนสตริงที่ถอดรหัส
กฎการเข้ารหัสคือ −
n[encodedString], where the encodedString inside the square brackets is being repeated exactly n times.
และรับประกันว่า 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