Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ฟังก์ชันถอดรหัสสตริงใน JavaScript

เราได้รับสตริงที่เข้ารหัส และเราต้องประมวลผลผ่านฟังก์ชันที่คืนค่าสตริงที่ถอดรหัสแล้ว

กฎการเข้ารหัสคือ:

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