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.
解题思路:
每次遇到左半边括号则往栈里push右半边括号,遇到右半边括号则和栈里最顶端的括号比较是否相等,
如果栈非空并且栈最上边元素和str[i]相等,则正确。否则不正确。
bool isValid(string s) {
stack<char> stack; //注意栈的创建方式 #include <stack>
char str[10000] ;
int i;
strcpy(str,s.c_str());
for(i = 0; i<s.length(); i++)
{
if(str[i] == '(')
stack.push(')');
else if(str[i] == '[')
stack.push(']');
else if(str[i] == '{')
stack.push('}');
else if(!stack.empty()&&(stack.top() == str[i]))
{
stack.pop();
}
else
return false;
}
return stack.empty();
}