<?phpclass Solution { /** * 最长有效括号 * @param String $s * @return Integer */ function longestValidParentheses($s) { $beginI = 0; $longest = 0; $stk = new SplStack(); for ($i = 0; $i < strlen($s); $i++) { if ($s[$i] == '(') { $stk->push($i); } else { if ($stk->isEmpty()) { $beginI = $i; continue; } $stk->pop(); // 如果当前栈为空 ? 对比当前连续正确的长度 与 最大长度 : 对比$i与栈顶元素长度 与 最大长度 ; $longest = $stk->isEmpty() ? max($i - $beginI, $longest) : max($i - $stk->top(), $longest); } } return $longest; }}$s = ")(()()(()";$cls = new Solution();$longest = $cls->longestValidParentheses($s);echo $longest;