4.1.1验证括号字符串
原创
©著作权归作者所有:来自51CTO博客作者喜欢打篮球的普通人的原创作品,请联系作者获取转载授权,否则将追究法律责任
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();
}
};