题目描述:

思路:
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,下次改一下。

本文通过C++使用栈数据结构解决LeetCode上的有效括号问题。解析了题目描述,提供了思路分析,以及具体的C++代码实现。
749

被折叠的 条评论
为什么被折叠?



