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