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

การหาวงเล็บที่ยาวที่สุด JavaScript


ให้สตริงที่มีเฉพาะอักขระ '(' และ ')' เราจะพบความยาวของสตริงย่อยในวงเล็บที่ถูกต้อง (ที่มีรูปแบบถูกต้อง) ที่ยาวที่สุด

ชุดของวงเล็บมีคุณสมบัติที่จะเป็นวงเล็บที่มีรูปแบบถูกต้อง หากวงเล็บเปิดแต่ละวงเล็บมีวงเล็บปิด

ตัวอย่างเช่น −

'(())()' is a well-formed parentheses
'())' is not a well-formed parentheses
'()()()' is a well-formed parentheses

ตัวอย่าง

const str = '(())()(((';
   const longestValidParentheses = (str = '') => {
      var ts = str.split('');
      var stack = [], max = 0;
      ts.forEach((el, ind) => {
         if (el == '(') {
            stack.push(ind);
         }
      else {
         if (stack.length === 0 || ts[stack[stack.length - 1]] == ')'){
            stack.push(ind);
         }
         else {
            stack.pop();
         };
      }
   });
   stack.push(ts.length);
   stack.splice(0, 0, -1);
   for (let ind = 0;
   ind< stack.length - 1; ind++) {
      let v = stack[ind+1] - stack[ind] - 1; max = Math.max(max, v);
   };
   return max;
}; console.log(longestValidParentheses(str));

ผลลัพธ์

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

6