问题
https://leetcode.com/problems/valid-parentheses/
解法一(2ms)
使用c++ stack实现
class Solution {
public:
bool isValid(string s) {
stack<char> st;
for (int i=0; i< s.size(); i++)
{
char c;
if (s[i] =='(' || s[i] == '{' || s[i]=='[')
st.push(s[i]);
else if (s[i] == ')')
{
if (st.empty() || st.top() != '(')
return false;
st.pop();
}else if (s[i] == '}')
{
if (st.empty() || st.top() != '{')
return false;
st.pop();
}else if (s[i] == ']')
{
if (st.empty() || st.top() != '[')
return false;
st.pop();
}
}
return st.empty();
}
};
解法二 (0ms)
自己维护堆栈
class Solution {
public:
bool isValid(string s) {
char st[s.size()];
int stPtr = -1;
for (int i=0; i< s.size(); i++)
{
char c;
if (s[i] =='(' || s[i] == '{' || s[i]=='[')
st[++stPtr] = s[i];
else if (s[i] == ')')
{
if (stPtr==-1 || st[stPtr] != '(')
return false;
stPtr--;
}else if (s[i] == '}')
{
if (stPtr==-1 || st[stPtr] != '{')
return false;
stPtr--;
}else if (s[i] == ']')
{
if (stPtr==-1 || st[stPtr] != '[')
return false;
stPtr--;
}
}
return stPtr==-1;
}
};