您的位置:首页 > 编程语言 > C语言/C++

Leetcode -- 20. Valid Parentheses

2017-04-16 23:22 567 查看

题目: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.

思路:

本题比较简单,主要考察基本的栈操作,遇到左括号就压栈,遇到右括号就与栈顶元素进行比较,如果是相对应的左括号就弹栈,否则就返回false。当比较完整个字符串时,如果栈为空,则返回true,否则返回false.

bool isValid(string s) {
stack<char> str;
for (int i = 0; i < s.length(); i++)
{
if (s[i] == '(' || s[i] == '[' || s[i] == '{')
{
str.push(s[i]);
}
else
{
if (str.empty())
return false;
if (str.top() == '(' && s[i] == ')' || str.top() == '[' && s[i] == ']' || str.top() == '{' && s[i] == '}')
{
str.pop();
}
else
{
return false;
}
}
}
if (str.empty())
return true;
else
return false;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode c-c++