您的位置:首页 > 其它

LeetCode 20. Valid Parentheses

2016-08-10 20:01 381 查看
一个关于堆使用的问题,其实学习过关于二叉树,了解过遍历思想的,应该很容易看到此题的时候,朝这个方向思考,LeetCode 20题的原题是:

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.
题目大意是:空格字符串包含着以上的字符
'('
')'
'{'
'}'
'['
 and 
']',这些字符需要按照匹配顺序出现,类似“{{[()]}}”等满足要求,不按照匹配顺序则不是正确的顺序。

因此想到了利用堆来解决这个问题,即把每次字符串中国的符号的左含义的符号读入堆中,下一次来的右含义的符号必须严格匹配其左含义的符号

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