问题
这个问题是非常简单的。就是匹配括号。那么要用到stack这个数据结构。而用C++的stack来编写,问题变得非常简单。
同时感谢这篇博客的博主
http://blog.csdn.net/zhouworld16/article/details/17629755
代码分析
class Solution {
public:
bool isValid(string s)
{
stack<char> charStack;
size_t i = 0;
while (i != s.length())
{
char ch = s[i];
//如果是左括号
if (ch != ')' && ch != '}' && ch != ']')
{
charStack.push(ch);
}
//如果是右括号
else
{
if (charStack.size() == 0)
{
return false;
}
char pre = charStack.top();
switch (ch)
{
case ')':
if (pre == '('){
charStack.pop();
}
else{
return false;
}
break;
case ']':
if (pre == '['){
charStack.pop();
}
else{
return false;
}
break;
case '}':
if (pre == '{'){
charStack.pop();
}
else{
return false;
}
break;
default:
break;
}
}
i++;
}
if (charStack.size() == 0)
{
return true;
}
else
{
return false;
}
}
};