![](https://img-blog.csdnimg.cn/img_convert/6f346a7580c9f8fbe237bed30b0795b3.png)
这道题目不用想的太复杂,先自己理清逻辑,既然这是一道栈的问题,我第一时间就想到把字符串中的左括号存入栈中,然后如果遇到与之匹配的右括号就退栈,你可以根据一些特殊字符串的特点在开头就判断是不能成为有效的括号的(这样子可以适当的减少运行时间),这里我用的是类似("(","()]")的字符串(长度为奇数的字符串s)。
然后就要构想一下函数了,首先建一个栈,然后想到需要一个while循环去限制s指针的移动,然后while循环体内部就用两个if语句,一个是左括号进栈的,一个是匹配成功退栈的,主要要注意指针的移动,避免overflow了。
最后就是看匹配成功的次数是否等于字符串的长度的一半,如果是就返回true,否则返回false。
![](https://img-blog.csdnimg.cn/img_convert/5630a5804ba4a4061eb10e86c763eea1.png)