Chúng tôi được cung cấp một chuỗi được mã hóa và chúng tôi bắt buộc phải xử lý nó thông qua một hàm trả về chuỗi đã được giải mã của nó.
Quy tắc mã hóa là -
n[encodedString], where the encodedString inside the square brackets is being repeated exactly n times.
Và n được đảm bảo là một số nguyên dương.
Chúng ta có thể giả định rằng chuỗi đầu vào luôn hợp lệ; Không có khoảng trắng thừa, dấu ngoặc vuông được tạo hình tốt, v.v.
Ví dụ - Nếu đầu vào là -
const str = "3[a]2[bc]";
Sau đó, đầu ra phải là -
const output: "aaabcbc";
Ví dụ
Mã cho điều này sẽ là -
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));
Đầu ra
Và đầu ra trong bảng điều khiển sẽ là -
aaabcbc