给定一个字符串,其中只包含左括号'(' 以及右括号 ')',要求返回最长的匹配括号长度。
比如给定"(()",那么我们的函数需要返回2,因为最长的匹配括号是"()";
比如给定")()())",那么我们的函数需要返回4,因为最长的匹配括号是"()()";
如果在面试的时候遇到这个题目,你该如何解决呢?
我的思考过程
首先我们要明确的就是什么样的字符串才是匹配的括号,其实很简单,那就是如果一个括号串中的左括号"("和右括号")"都能相互抵消掉,那么我们就说这是匹配的括号;
比如给定"())",其中"()"能抵消掉,剩下的")"就没有对应的"("来抵消,这样的字符串就不满足要求;
对于"(()())",其中中间的两个"()()"能抵消掉,最后剩下一个"()"也能抵消,这样的字符串就满足要求;
从上面的分析过程可以看到这其实可以用栈这种数据结构来进行判断&#