Valid Parentheses
因为满足要求的字符串中,必有一封闭括号在其内部,且去除此括号,剩余的依然内部为封闭括号。
所以,此问题使用堆栈操作较易解决
(1)构建字符堆栈,遍历字符串 s
(2)如遇 '(', '[', "{",则入栈
遇')', ']', '}',若堆栈中有相对应的括号,则弹栈;无,则不满足要求返回 false
代码如下:
class Solution {
public:
bool isValid(string s) {
stack<char> brackets;
for (auto& c: s)
{
switch (c)
{
case '(':
case '[':
case '{':
brackets.push(c);
break;
case ')':
if (brackets.empty() || brackets.top() != '(')
{
return false;
}
else
brackets.pop();
break;
case ']':
if (brackets.empty() || brackets.top() != '[')
{
return false;
}
else
brackets.pop();
break;
case '}':
if (brackets.empty() || brackets.top() != '{')
{
return false;
}
else
brackets.pop();
break;
}
}
return brackets.empty();
}
};
此问题补充知识点:
堆栈对初次使用,及push、pop、top函数的使用