- 思路
- 遍历整个字符串,如果遍历到左边元素,则将该元素对应的右边元如push到栈中
- 如果遍历到“非左边元素”,则比较该元素是否与栈顶元素相同,如果相同则pop掉该元素,否则返回 false
class Solution
{
public:
bool isValid(string s)
{
stack<int> st;
for (int i = 0; i < s.size(); ++i)
{
if (s[i] == '(')//遍历整个字符串,如果遍历到左边元素,则将该元素对应的右边元如push到栈中
{
st.push(')');
}
else if (s[i]=='{')
{
st.push('}');
}
else if (s[i] == '[')
{
st.push(']');
}
else if (st.empty() || s[i] != st.top())//如果遍历到“非左边元素”,则比较该元素是否与栈顶元素相同,如果相同则pop掉该元素,否则返回 false
{
return false;
}
else
{
st.pop();
}
}
return st.empty();
}
};