1.题目

  • ​​题目要求​​
  • 思路:
    这道题让我们验证输入的字符串是否为括号字符串,包括大括号,中括号和小括号。
    这里需要用一个栈,开始遍历输入字符串,如果当前字符为左半边括号时,则将其压入栈中,如果遇到右半边括号时,若此时栈为空,则直接返回 false,如不为空,则取出栈顶元素,若为对应的左半边括号,则继续循环,反之返回 false。

2.代码

class Solution{
public:
bool isValid(string const& s)
{
stack<char> temptack;
for (int i=0;i<s.size();++i)
{
if (s[i] == '(' || s[i] == '{' || s[i] == '[')
tempstack.push(s[i]);
else
{
if (temptack.empty())
return false;
else if (s[i] == ')' && tempstack.top() != '(')
return false;
else if (s[i] == '}' && tempstack.top() != '{')
return false;
else if (s[i] == ']' && tempstack.top() != '[')
return false;
temptack.pop();
}
}

return temptack.empty();
}
};