LeeCode from 0

20. Valid Parentheses

解题思路:

1)将'(' ,  '[' ,  '{' 压入栈;

2)判断栈顶元素是否可以和之后出现的第一个非 1)中的元素匹配。若匹配,则去弹出此时的栈顶元素,反之返回false。例如现在栈顶元素为'('  ,若接下来出现的第一个非 1)中元素为 ')'  ,则匹配,弹出栈顶元素'('  ,继续循环;若不匹配则返回false。

3)若循环结束,此时站内元素为0,则可能为栈内元素全部弹出,也可能为输入空的字符串组,这两种情况都返回true;反之表示栈内元素未完全匹配完,返回false。

代码如下:

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

}
}

if(str.empty())
return true;
else
return false;

}
};

posted @ 2018-06-04 21:53  ssml  阅读(97)  评论(0编辑  收藏  举报