diff --git a/apps/docs/content/(string)/20-valid-parentheses.mdx b/apps/docs/content/(string)/20-valid-parentheses.mdx new file mode 100644 index 0000000..e26830b --- /dev/null +++ b/apps/docs/content/(string)/20-valid-parentheses.mdx @@ -0,0 +1,54 @@ +--- +title: '20. Valid Parentheses' +description: Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid +sidebar: + label: 'Valid Parentheses' + badge: 'Easy' +--- + +Stack + +### Example 1: +- Input: `s = "()"` +- Output: `true` + +### Example 2: +- Input: `s = "()[]{}"` +- Output: `true` + +### Example 3: +- Input: `s = "(]"` +- Output: `false` + +### Example 4: +- Input: `s = "([])"` +- Output: `true` + +### Example 5: +- Input: `s = "([)]"` +- Output: `false` + +### Constraints: + +- `1 <= s.length <= 10^4` +- `s` consists of parentheses only '()[]{}'. + +## Solution + +```py +class Solution: + def isValid(self, s: str) -> bool: + stack = [] + pairs = {")": "(", "]": "[", "}": "{"} + + for c in s: + if c in pairs: + if stack and pairs[c] == stack[-1]: + stack.pop() + else: + return False + else: + stack.append(c) + + return True if not stack else False +```