您的位置:首页 > 其它

20. 有效的括号-leetcode

2018-04-05 13:55 423 查看
给定一个只包括
'('
')'
'{'
'}'
'['
']'
 的字符串,判断字符串是否有效。括号必须以正确的顺序关闭,
"()"
和 
"()[]{}"
是有效的但是 
"(]"
和 
"([)]"
不是。

解决这道题目就是使用了堆栈的思想,刚开始我是没有思路的,知道后来想起来,通过堆栈的后进先出,判断是否形成对应的括号,来解决问题。下面粘贴出来代码
class Solution {
public:
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(s[i] == ')')
{
if(str.empty())       //如果判断当前的字符为),且堆栈为空,说明之前的没有(与之对应的,故返回错误
return false;
else
{
if(str.top() == '(')
{
str.pop();
continue;
}
else
return false;
}
}
else if(s[i] == '}')
{
if(str.empty())      //原因与上类似
return false;
else
{
if(str.top() == '{')
{
str.pop();
continue;
}
else
return false;
}
}
else if(s[i] == ']')
{
if(str.empty())     //原因与上类似
return false;
else
{
if(str.top() == '[')
{
str.pop();
continue;
}
else
return false;
}
}
}
if(str.empty())     //当所有的字符串配对完成且没有错误时,对战应该为空,所以返回正确
return true;
else
return false;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: