दिए गए स्ट्रिंग में केवल '(' और ')' वर्ण हैं, हम सबसे लंबे वैध (वेल-फॉर्म्ड) पैरेंथेसिस सबस्ट्रिंग की लंबाई ढूंढते हैं।
पैरेंथेसिस का एक सेट वैध पैरेंथेसिस के रूप में योग्य होता है, यदि और केवल यदि, प्रत्येक ओपनिंग पैरेंथेसिस के लिए, इसमें एक क्लोजिंग पैरेंथेसिस होता है।
उदाहरण के लिए -
'(())()' एक वैध पैरेंथेसिस है '())' एक वैध पैरेंथेसिस नहीं है '()()()' एक वैध पैरेंथेसिस है
उदाहरण
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