เราได้รับสตริงวงเล็บเหลี่ยม และเราต้องเขียนฟังก์ชันที่เพิ่มวงเล็บที่จุดเริ่มต้นและจุดสิ้นสุดของสตริงเพื่อให้วงเล็บทั้งหมดตรงกัน
วงเล็บเหลี่ยมจะตรงกันหากทุก <มีความสอดคล้องกัน> และสำหรับทุกๆ> จะมี <.
. ที่สอดคล้องกันตัวอย่างเช่น − หากสตริงอินพุตคือ −
const str = '><<><';
ผลลัพธ์
จากนั้นผลลัพธ์ควรเป็น −
const output = '<><<><>>';
ในที่นี้ เราได้เพิ่ม '<' ที่จุดเริ่มต้นและ '>>' ที่ส่วนท้ายเพื่อทำให้สตริงสมดุล
เราจะใช้ตัวเลขที่จะนับจำนวนแท็กที่เปิดอยู่ '<' จากนั้น เมื่อเราพบแท็ก '>' หากไม่มีแท็กที่เปิดอยู่ เราจะเพิ่ม '<' ที่จุดเริ่มต้นของสตริง (ในขณะที่ยังคงนับแท็กที่เปิดอยู่ที่ 0)
จากนั้น ในตอนท้าย ให้เพิ่มจำนวน '> ที่ตรงกับจำนวนแท็กที่เปิดอยู่ในปัจจุบัน
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
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)); ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
><<><>>