Given a string s containing just the characters ‘(’, ‘)’, ‘{’, ‘}’, ‘[’ and ‘]’, determine if the input string is valid.
An input string is valid if:
Open brackets must be closed by the same type of brackets.
Open brackets must be closed in the correct order.
刚开始做属实给我难住了。。。。
看来题解的栈的用法,发现新大陆
菜狗狂怒
本来相用map存括号
发现C++不太会用
开始写的&&逻辑符报错???
换成了|||||
不想说话了
菜使我自闭
class Solution {
public:
bool isValid(string s) {
if(s.length()%2==1)
{
return false;
}
else
{
stack<char> stk;
for(int i=0;i<s.length();i++)
{
if(stk.empty()||s[i]=='('||s[i]=='['||s[i]=='{')
stk.push(s[i]);
else if (stk.top()=='(' && s[i]==')')
{
stk.pop();
}
else if (stk.top()=='[' && s[i]==']')
{
stk.pop();
}
else if (stk.top()=='{' && s[i]=='}')
{
stk.pop();
}
else
{
return false;
}
}
return stk.empty();
}
}
};