有效的括号
栈的定义
栈是只允许在一端进行插入或者删除的线性表。
栈顶是线性表允许插入或删除的一端,栈底是不允许进行插入和删除的一端。
栈的操作特性可以概括为后进先出。
STL中stack的用法
empty();// 堆栈为空则返回真
pop(); // 移除栈顶元素
push(); //在栈顶增加元素
size(); // 返回栈中元素数目
top(); //返回栈顶元素
解题思路
利用栈后进先出的特性
若碰到’(’ ‘[’ '{'时把对应的括号压入栈中
若是可匹配的括号,将栈顶元素移除;若不是可匹配的括号或此时栈中已经为空,则返回false;
字符判断完毕后,如果满足题意,栈中应该为空。
代码
class Solution {
public:
bool isValid(string s) {
stack <char> sta;
for(int i=0;i<s.size();i++){
if(s[i]=='(') sta.push(')');
else if(s[i]=='[') sta.push(']');
else if (s[i]=='{') sta.push('}');
else if (sta.empty() || sta.top()!=s[i]) return false;
else if(sta.top()==s[i]) sta.pop();
}
return sta.empty();
}
};