题目如下:
解题思路:
如果只包括一种括号,那么采用计数器方法进行匹配即可即可。但是本题包括 ‘ ( ’、‘ [ ’、‘ { ’ 三种括号,因此需要考虑不同括号出现的位置,采用计数器的方法行不通。所以最好的方法是采用 栈 来解决:
相同类型
的
左括号,那么将它从出站并继续处理下一个括号。否则,这意味着 表达式无效 。代码如下:
class Solution {
public:
bool isValid(string s) {
stack ss; //声明栈
int length = s.size();
for(int i = 0; i < length; i++)
{
if(ss.empty()){
ss.push(s[i]);
}
//出栈
else if(s[i] == ')' && ss.top() == '('){
ss.pop();
}
else if(s[i] == ']' && ss.top() == '['){
ss.pop();
}
else if(s[i] == '}' && ss.top() == '{'){
ss.pop();
}
//入栈
else{
ss.push(s[i]);
}
}
if(ss.empty())
return true;
else
return false;
}
};