题目描述
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
思路
- 第一感觉就是要用栈,左括号压入,右括号应当和栈顶的左括号匹配并弹出,否则返回false,若最终栈不为空也返回false
代码
方法一:
class Solution {
public:
bool isValid(string s) {
if(s.size()==0)
return true;
stack<char> st;
string kuohao = "()[]{}";
for(int i = 0; i <s.size();i++)
{
int number = kuohao.find(s[i]);
if(number%2 == 0)
{
st.push(s[i]);
}
else
{
if(st.size()>0)
{
char tmp = st.top();
if(kuohao.find(tmp) == number-1)
st.pop();
else
return false;
}
else
return false;
}
}
if(st.size()==0)
return true;
else
return false;
}
};