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