Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Giải mã chuỗi trong JavaScript

Cho một chuỗi đã được mã hóa, ta cần viết hàm xử lý để trả về chuỗi gốc.

Quy tắc mã hóa:

n[encodedString]

Trong đó encodedString bên trong cặp ngoặc vuông được lặp lại đúng n lần. n đảm bảo là số nguyên dương. Chuỗi đầu vào luôn hợp lệ (không khoảng trắng thừa, ngoặc vuông cân bằng...).

Ví dụ: đầu vào "3[a]2[bc]" cho ra "aaabcbc".

Ví dụ

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"

Kết quả

aaabcbc