题意:给定一个字符串,判断是否有效,括号是否闭合且合理
①括号们必须成对出现,即一个左括号必须只能对应一个右括号
②括号们必须合理配对,只能嵌套不能交叉,像([)]是不可以的
定义一个栈,进行先入后出的模拟,就是本题的思路,不要忘记最后判断栈空就ok了
class Solution {
public:
bool isValid(string s) {
int len=s.length();
stack<char>data;
for(int i=0;i<len;i++){
if(s[i]=='('||s[i]=='['||s[i]=='{')
{
data.push(s[i]);
}
else if(!data.empty()&&s[i]==')'&&data.top()=='(')
{
data.pop();
}
else if(!data.empty()&&s[i]==']'&&data.top()=='[')
{
data.pop();
}
else if(!data.empty()&&s[i]=='}'&&data.top()=='{')
{
data.pop();
}
else return false;
}
if(!data.empty()) return false;
else return true;
}
};