শুধু '(' এবং ')' ক্যারেক্টার সম্বলিত একটি স্ট্রিং দেওয়া থাকলে, আমরা সর্বোচ্চ দৈর্ঘ্যের বৈধ (well-formed) প্যারেনথেসিস সাবস্ট্রিং-এর দৈর্ঘ্য বের করব।
একটি প্যারেনথেসিস সেট বৈধ হয় যদি এবং কেবল যদি, প্রতিটি ওপেনিং প্যারেনথেসিস-এর জন্য একটি ক্লোজিং প্যারেনথেসিস থাকে।
উদাহরণস্বরূপ −
'(())()' একটি বৈধ প্যারেনথেসিস '())' একটি বৈধ প্যারেনথেসিস নয় '()()()' একটি বৈধ প্যারেনথেসিস
উদাহরণ
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