Chúng ta được cho một chuỗi các ngoặc nhọn, và cần viết một hàm thêm ngoặc ở đầu và cuối chuỗi để tất cả các ngoặc khớp nhau. Ngoặc khớp nếu mỗi '<' có '>' tương ứng và ngược lại.
Ví dụ: Nếu chuỗi đầu vào là: const str = '><<><';
Thì đầu ra sẽ là: const output = '<><<><>>'; (Thêm '<' ở đầu và '>>' ở cuối).
Chúng ta sẽ dùng một biến đếm số thẻ '<' mở cho đến nay. Khi gặp '>', nếu không có thẻ mở, thêm '<' vào đầu (giữ đếm ở 0). Cuối cùng, thêm số '>' khớp với số thẻ mở còn lại.
Ví dụ
Code cho việc này sẽ là:
const str = '><<><';
const buildPair = (str = '') => {
let count = 0;
let extras = 0;
for (const char of str) {
if (char === '>') {
if (count === 0) extras++;
else count--;
} else {
count++;
}
}
const leadingTags = '<'.repeat(extras);
const trailingTags = '>'.repeat(count);
return leadingTags + str + trailingTags;
};
console.log(buildPair(str));Kết quả
Kết quả hiển thị trong console sẽ là:
><<><>>