好久不写LeetCode,感觉都有点生疏了
C版本1:
bool isValid(char* s) {
char stack[1000000];
int top=-1;
while(*s){
if(*s==')'){
if(top>=0 && stack[top]=='(')top--;
else return false;
}else if(*s=='}'){
if(top>=0 && stack[top]=='{')top--;
else return false;
}else if(*s==']'){
if(top>=0 && stack[top]=='[')top--;
else return false;
}else stack[++top]=*s;
s++;
}
return top==-1;
}
C++版本:
class Solution {
public:
bool isValid(string s) {
stack<char> parentheses;
for (int i = 0; i < s.size(); ++i) {
if (s[i] == '(' || s[i] == '[' || s[i] == '{') parentheses.push(s[i]);
else {
if (parentheses.empty()) return false;
if (s[i] == ')' && parentheses.top() != '(') return false;
if (s[i] == ']' && parentheses.top() != '[') return false;
if (s[i] == '}' && parentheses.top() != '{') return false;
parentheses.pop();
}
}
return parentheses.empty();
}
};