判断括号是否匹配,主要运用的数据结构是栈,具体写判断条件时还需要认真思考,代码如下
class Solution {
public:
bool isValid(string s) {
stack <string> judge;
if(s.substr(0,1) == ")" || s.substr(0,1) == "]" || s.substr(0,1) == "}")
return false;
for(int i = 0; i < s.size();i++){
if(s.substr(i,1) == "(" || s.substr(i,1) == "[" || s.substr(i,1) == "{")
judge.push(s.substr(i,1));
if(s.substr(i,1) == ")"){
if(judge.empty())
return false;
if(judge.top() == "(")
judge.pop();
else
judge.push(s.substr(i,1));
}
if(s.substr(i,1) == "]"){
if(judge.empty())
return false;
if(judge.top() == "[")
judge.pop();
else
judge.push(s.substr(i,1));
}
if(s.substr(i,1) == "}"){
if(judge.empty())
return false;
if(judge.top() == "{")
judge.pop();
else
judge.push(s.substr(i,1));
}
}
if(judge.size() == 0)
return true;
return false;
}
};