题意理解:
判断字符串中'(') , '[]', '{}' 是否成对出现;
题目分析:
1. 将非右括号的字符放入栈中;
2. 出现右括号时,检测栈顶是否为对应的左括号。如果为对应的左括号则继续字符串的下一个字符检查,否则返回false;
3. 最后判断栈的大小是否为0,非零则返回false;
解题代码:
class Solution {
public:
bool isValid(string s) {
if(s==""){
return true;
}
int size=s.length();
stack<char> cStack;
for(int i=0;i<size;i++){
char c=s[i];
if(c==')' || c==']' || c=='}'){
if(cStack.size()<=0){
return false;
}
char top=cStack.top();
if((c==')' && top=='(') ||
(c==']' && top=='[') ||
(c=='}' && top=='{')){
cStack.pop();
continue;
}else{
return false;
}
}else{
cStack.push(c);
}
}
if(cStack.size()>0){
return false;
}
return true;
}
};