题目描述:
思路:
1.单括号():设置变量left,记录当前还未配对的前括号(;每遇到(,left++;每遇到 ),left--
2.但是当出现多种括号时,方法一不适用,为了应对 { [ ( ) ] } 和 [ ( ] ) 这种情况,引入栈数据结构。
C++代码实现:
class Solution {
public:
bool isValid(string s) {
vector<int> res;
for(char c:s){
if(c=='('||c=='['||c=='{'){
res.push_back(c);
}
if(c==')'){
if(res.size()>0&&res.back()=='('){
res.pop_back();
}else{
return false;
}
}
if(c==']'){
if(res.size()>0&&res.back()=='['){
res.pop_back();
}else{
return false;
}
}
if(c=='}'){
if(res.size()>0&&res.back()=='{'){
res.pop_back();
}else{
return false;
}
}
}
if(res.size()==0){
return true;
}else{
return false;
}
}
};
PS:
C++有自带的stack,下次改一下。