时间复杂度和空间复杂度均为O(n)
class Solution {
public:
bool isValid(string s)
{
const int n = s.size();
if(n == 0)
return true;
string left = "({[";
string right = ")}]";
stack<char> sta;
for(auto c: s)
{
if(left.find(c) != string::npos)
{
sta.push(c);
}
else if(!sta.empty() && sta.top() == left[right.find(c)]) //be careful here
{
sta.pop();
}
else
return false;
}
return sta.empty();
}
};