adding two stack problems
This commit is contained in:
37
leetcode/p20_valid_parentheses.cpp
Normal file
37
leetcode/p20_valid_parentheses.cpp
Normal file
@@ -0,0 +1,37 @@
|
||||
class Solution {
|
||||
public:
|
||||
bool isValid(string s) {
|
||||
std::stack<char> myStack;
|
||||
int len = s.length();
|
||||
char c;
|
||||
for(int i=0;i<len;i++){
|
||||
// push all the open brackets into the stack
|
||||
if(s[i]=='(' || s[i]=='{' || s[i]=='['){
|
||||
myStack.push(s[i]);
|
||||
}else{
|
||||
// if we encounter a close bracket first, it's already invalid.
|
||||
if(myStack.empty()){
|
||||
return false;
|
||||
}
|
||||
c = myStack.top();
|
||||
myStack.pop();
|
||||
// for every close bracket we encounter, there must be a corresponding open bracket at the top of the stack.
|
||||
if(s[i]==')' && c!='('){
|
||||
return false;
|
||||
}
|
||||
if(s[i]=='}' && c!='{'){
|
||||
return false;
|
||||
}
|
||||
if(s[i]==']' && c!='['){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
// if it's empty, we are good.
|
||||
if(myStack.empty()){
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user