Given a string containing just the characters '('
, ')'
, '{'
, '}'
, '['
and ']'
, determine if the input string is valid.
The brackets must close in the correct order, "()"
and "()[]{}"
are all valid but "(]"
and "([)]"
are not.
class Solution {
public:
bool isValid(string s) {
size_t len=s.size();
if(len%2==1||s[0]==')'||s[0]==']'||s[0]=='}')
return false;
stack<char> v;
for(auto i=0;i<len;i++)
{
if(s[i]=='('||s[i]=='['||s[i]=='{')
v.push(s[i]);
else if(s[i]==')'||s[i]==']'||s[i]=='}')
{
char temp=v.top();
v.pop();
if((s[i]==')' && temp=='(')||(s[i]==']' && temp=='[')||(s[i]=='}' && temp=='{'))
continue;
else
return false;
}
}
return v.empty();
}
};
c++stack(堆栈)
它是一个容器的改编,它实现了一个先进后出的数据结构(FILO)
使用该容器时需要包含#include<stack>头文件;
定义stack对象的示例代码如下:
stack<int>s1;
stack<string>s2;
stack的基本操作有:
1.入栈:如s.push(x);
2.出栈:如 s.pop().注意:出栈操作只是删除栈顶的元素,并不返回该元素。
3.访问栈顶:如s.top();
4.判断栈空:如s.empty().当栈空时返回true。
5.访问栈中的元素个数,如s.size();