Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ปัญหาวงเล็บมุมแยกวิเคราะห์และสมดุลใน JavaScript


เราได้รับสตริงวงเล็บเหลี่ยม และเราต้องเขียนฟังก์ชันที่เพิ่มวงเล็บที่จุดเริ่มต้นและจุดสิ้นสุดของสตริงเพื่อให้วงเล็บทั้งหมดตรงกัน

วงเล็บเหลี่ยมจะตรงกันหากทุก <มีความสอดคล้องกัน> และสำหรับทุกๆ> จะมี <.

. ที่สอดคล้องกัน

ตัวอย่างเช่น − หากสตริงอินพุตคือ −

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));

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

><<><>>