力扣 20. 有效的括号
【注意字符串栈格式是:stack name;】
bool isValid(char * s){
int len=strlen(s),jishu=0;
char news[len];
for(int i=0;i<len;i++){
if(s[i]=='(')
news[jishu++]=')';
else if(s[i]=='[')
news[jishu++]=']';
else if(s[i]=='{')
news[jishu++]='}';
//jishu!=0是指当{[]})这种情况判断到第5位时jishu为零,但是不符合规则
else if(jishu!=0&&s[i]==news[jishu-1])jishu--;
else return 0;
}
return jishu==0;
}
class Solution {
public:
bool isValid(string s) {
stack <char> ret;
int len = s.size();
for(int i=0 ; i<len ;i++){
if(s[i]=='('||s[i]=='{'||s[i]=='[')
ret.push(s[i]);
else if(s[i]==')'||s[i]=='}'||s[i]==']'){
if (ret.empty()) return 0;
if(s[i]==')') {
if (ret.top()=='('){
ret.pop();
continue;
}
}
if(s[i]=='}') {
if (ret.top()=='{') {
ret.pop();
continue;
}
}
if(s[i]==']') {
if (ret.top()=='['){
ret.pop();
continue;
}
}
return false;
}
}
return ret.empty();
}
};
class Solution {
public:
bool isValid(string s) {
int len =s.size();
if(len%2 == 1)return false;
stack <char> ret;
for(int i=0 ;i<len ;i++){
if (s[i] == '(') ret.push(')');
else if (s[i] == '{') ret.push('}');
else if (s[i] == '[') ret.push(']');
//是空的还要继续放,不等于栈顶元素,两种情况返回false
else if(ret.empty()||ret.top()!=s[i])return false;
else ret.pop();
}
return ret.empty();
}
};