Longest Valid Parentheses LeetCode solution in C++
1class Solution {2public:3int longestValidParentheses(string s) {4int n = s.length(), i = 0, ans = 0, k = 0;5for (int j = 0; j < n; j++) {6if (s[j] == '(')7k++;8else if (s[j] == ')') {9k--;10if (k == 0) ans = max(ans, j - i + 1);11}12if (k < 0) {13k = 0;14i = j + 1;15}16}17k = 0, i = n - 1;18for (int j = n - 1; j >= 0; j--) {19if (s[j] == ')') {20k++;21} else if (s[j] == '(') {22k--;23if (k == 0) ans = max(ans, i - j + 1);24}25if (k < 0) {26k = 0;27i = j - 1;28}29}30return ans;31}32};