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;
}
};