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

การหาคะแนนของวงเล็บใน JavaScript


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้สตริงวงเล็บเหลี่ยมแบบบาลานซ์ str เป็นอาร์กิวเมนต์แรกและตัวเดียว

ฟังก์ชันของเราควรคำนวณและส่งคืนคะแนนของสตริงตามกฎต่อไปนี้ -

  • [ ] มีคะแนน 1

  • AB มีคะแนน A + B โดยที่ A และ B เป็นสตริงวงเล็บแบบสมดุล

  • [A] มีคะแนน 2 * A โดยที่ A คือวงเล็บเหลี่ยมแบบสมดุล

ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ

ป้อนข้อมูล

const str = '[][]';

ผลผลิต

const output = 2;

ตัวอย่าง

ต่อไปนี้เป็นรหัส -

const findScore = (str = '') => {
   const arr = []
   for(const char of str) {
      arr.push(char)
      while(arr[arr.length - 1] === ']') {
         arr.pop()
         if(arr[arr.length - 1] === '[') {
            arr.pop() arr.push(1)
         } else {
            let num = arr.pop()
            while(arr[arr.length - 1] >= 1) {
               num += arr.pop()
            }
            arr.pop()
            arr.push(2 * num)
         }
      }      
   }
   return arr.reduce((acc, a) => acc + a, 0)
};
console.log(findScore(str));

ผลลัพธ์

2