Well,发现自己的解题思路还是有问题
遇到左括号直接压栈处理,遇到右括号,再看栈顶,若是匹配,则弹出
最后栈如果为空,那就相当于完全处理完毕了,直接返回true
class Solution {
public:
/**
*
* @param s string字符串
* @return bool布尔型
*/
bool isValid(string s) {
// write code here
stack<char> stk;
char p = ' ';
for(int i = 0;i < s.size();i++) {
//左括号统一入栈
if(s[i] == '('||s[i] == '['||s[i] == '{') {
stk.push(s[i]);
}
//
else if(s[i] == ')')
{
//栈顶为空,说明永远不会再有左括号了,所以直接false
if(stk.empty()) return false;
if(stk.top() == '(') stk.pop();
}
else if(s[i] == '}') {
if(stk.empty()) return false;
if(stk.top() == '{') stk.pop();
}
else if(s[i] == ']') {
if(stk.empty()) return false;
if(p = stk.top() == '[') stk.pop();
}
}
// 此时栈顶为空,说明所以元素处理完毕啦,直接返回true
if(stk.empty()) {
return true;
}
return false;
}
};