1、Valid Parentheses 括号的匹配
题目:
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.
思路:
1、设计一个堆栈stack,将’(‘, ‘{‘, ‘[‘放进去;
2、如果为 ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’,则判断堆栈顶端是否为相对应的括号形式,如果不对应,则为false;
3、如果最后堆栈为空,则表示全都匹配过了,返回为真;
代码:
class Solution {
public:
bool isValid(string s) {
stack<char> charstack;
for(int i=0;i<s.length();i++)
{
char charParenthes=s[i];
if(charParenthes!=')' && charParenthes!='}' && charParenthes!=']')
charstack.push(charParenthes);
else
{
if(charstack.size()==0) return false;
char top=charstack.top();
switch(charParenthes)
{
case ')':
if(top=='(') charstack.pop();
else
return false;
break;
case '}':
if(top=='{') charstack.pop();
else
return false;
break;
case ']':
if(top=='[') charstack.pop();
else
return false;
break;
}
}
}
if(charstack.size()==0) return true;
else return false;
}
};