Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SunaDu] Week 6 #901

Merged
merged 5 commits into from
Jan 18, 2025
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
add solution: valid-parentheses
dusunax committed Jan 14, 2025
commit c0204ce8fd5b813fa55f3420ca449ff45de6c4e0
41 changes: 41 additions & 0 deletions valid-parentheses/dusunax.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
'''
# 20. Valid Parentheses
use stack data structure to perform as a LIFO
## Time and Space Complexity
```
TC: O(n)
SC: O(n)
```
#### TC is O(n):
- iterating through the string just once to check if the parentheses are valid. = O(n)
#### SC is O(n):
- using a stack to store the parentheses. = the worst case is O(n)
- using a map to store the parentheses. = O(1)
> for space complexity, fixed space is O(1).
> 👉 parentheses_map is fixed and its size doesn't grow with the input size.
> 👉 if the map has much larger size? the space complexity is still O(1).
'''

class Solution:
def isValid(self, s: str) -> bool:
stack = [] # SC: O(n)
parentheses_map = { # SC: O(1)
"(": ")",
"{": "}",
"[": "]"
}
Comment on lines +28 to +32
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

map 을 사용하지 않고 푸는 방법도 도전해도시면 재미있을것 같아요 :)


for char in s: # TC: O(n)
if char in parentheses_map:
stack.append(char)
else:
if len(stack) == 0 or parentheses_map[stack.pop()] != char:
return False

return not stack