adding the animation
This commit is contained in:
committed by
JamesFlare1212
parent
3d5614564f
commit
c26e4f8fc3
@@ -259,9 +259,71 @@ int main() {
|
|||||||
|
|
||||||
You can compile and run this above [program](queue.cpp).
|
You can compile and run this above [program](queue.cpp).
|
||||||
|
|
||||||
## 14.3 Leetcode Exercises
|
## 14.3 Stack Example Problem
|
||||||
|
|
||||||
|
Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
|
||||||
|
|
||||||
|
An input string is valid if:
|
||||||
|
|
||||||
|
- Open brackets must be closed by the same type of brackets.
|
||||||
|
- Open brackets must be closed in the correct order.
|
||||||
|
- Every close bracket has a corresponding open bracket of the same type.
|
||||||
|
|
||||||
|
Example 1: Input: s = "()" Output: true
|
||||||
|
|
||||||
|
Example 2: Input: s = "()[]{}" Output: true
|
||||||
|
|
||||||
|
Example 3: Input: s = "(]" Output: false
|
||||||
|
|
||||||
|
Example 4: Input: s = "([])" Output: true
|
||||||
|
|
||||||
|
Constraints: 1 <= s.length <= 104; s consists of parentheses only '()[]{}'.
|
||||||
|
|
||||||
|
We have the solution here:
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
<!-- - [Leetcode problem 20: Valid Parentheses](https://leetcode.com/problems/valid-parentheses/). Solution: [p20_valid_parentheses.cpp](../../leetcode/p20_valid_parentheses.cpp) -->
|
||||||
|
|
||||||
|
- Play this [animation](https://jidongxiao.github.io/CSCI1200-DataStructures/animations/stack/index.html) to see how this program works.
|
||||||
|
|
||||||
|
## 14.4 More Leetcode Exercises
|
||||||
|
|
||||||
- [Leetcode problem 225: Implement Stack using Queues](https://leetcode.com/problems/implement-stack-using-queues/). Solution: [p225_stack_using_queues.cpp](../../leetcode/p225_stack_using_queues.cpp).
|
- [Leetcode problem 225: Implement Stack using Queues](https://leetcode.com/problems/implement-stack-using-queues/). Solution: [p225_stack_using_queues.cpp](../../leetcode/p225_stack_using_queues.cpp).
|
||||||
- [Leetcode problem 232: Implement Queue using Stacks](https://leetcode.com/problems/implement-queue-using-stacks/). Solution: [p232_queue_using_stacks.cpp](../../leetcode/p232_queue_using_stacks.cpp).
|
- [Leetcode problem 232: Implement Queue using Stacks](https://leetcode.com/problems/implement-queue-using-stacks/). Solution: [p232_queue_using_stacks.cpp](../../leetcode/p232_queue_using_stacks.cpp).
|
||||||
- [Leetcode problem 20: Valid Parentheses](https://leetcode.com/problems/valid-parentheses/). Solution: [p20_valid_parentheses.cpp](../../leetcode/p20_valid_parentheses.cpp)
|
|
||||||
- [Leetcode problem 71: Simplify Path](https://leetcode.com/problems/simplify-path/). Solution: [p71_simplify_path.cpp](../../leetcode/p71_simplify_path.cpp)
|
- [Leetcode problem 71: Simplify Path](https://leetcode.com/problems/simplify-path/). Solution: [p71_simplify_path.cpp](../../leetcode/p71_simplify_path.cpp)
|
||||||
|
|||||||
Reference in New Issue
Block a user