|
1 | 1 | /**
|
| 2 | + * Time O(N) | Space O(N) |
| 3 | + * https://leetcode.com/problems/valid-parentheses/ |
2 | 4 | * @param {string} s
|
3 | 5 | * @return {boolean}
|
4 | 6 | */
|
5 |
| -var isValid = function(s) { |
6 |
| - let stack = []; |
7 |
| - let map = { |
| 7 | + var isValid = (s, stack = []) => { |
| 8 | + for (const bracket of s.split('')) {/* Time O(N) */ |
| 9 | + const isParenthesis = bracket === '('; |
| 10 | + if (isParenthesis) stack.push(')'); /* Space O(N) */ |
| 11 | + |
| 12 | + const isCurlyBrace = bracket === '{'; |
| 13 | + if (isCurlyBrace) stack.push('}'); /* Space O(N) */ |
| 14 | + |
| 15 | + const isSquareBracket = bracket === '['; |
| 16 | + if (isSquareBracket) stack.push(']');/* Space O(N) */ |
| 17 | + |
| 18 | + const isOpenPair = isParenthesis || isCurlyBrace || isSquareBracket; |
| 19 | + if (isOpenPair) continue; |
| 20 | + |
| 21 | + const isEmpty = !stack.length; |
| 22 | + const isWrongPair = stack.pop() !== bracket; |
| 23 | + const isInvalid = isEmpty || isWrongPair; |
| 24 | + if (isInvalid) return false; |
| 25 | + } |
| 26 | + |
| 27 | + return (stack.length === 0); |
| 28 | +}; |
| 29 | + |
| 30 | +/** |
| 31 | + * Time O(N) | Space O(N) |
| 32 | + * https://leetcode.com/problems/valid-parentheses/ |
| 33 | + * @param {string} s |
| 34 | + * @return {boolean} |
| 35 | + */ |
| 36 | +var isValid = (s, stack = []) => { |
| 37 | + const map = { |
8 | 38 | '}': '{',
|
9 | 39 | ']': '[',
|
10 |
| - ')':'(', |
| 40 | + ')': '(', |
11 | 41 | };
|
12 |
| - if(s.length < 2) return false; |
13 |
| - for(let i=0; i<s.length; i++){ |
14 |
| - if(s[i] in map){ |
15 |
| - if(stack[stack.length-1] == map[s[i]]){ |
16 |
| - stack.pop(); |
17 |
| - } else{ |
18 |
| - return false; |
19 |
| - } |
20 |
| - } else { |
21 |
| - stack.push(s[i]); |
22 |
| - } |
| 42 | + |
| 43 | + for (const char of s) {/* Time O(N) */ |
| 44 | + const isBracket = (char in map) |
| 45 | + if (!isBracket) { stack.push(char); continue; }/* Space O(N) */ |
| 46 | + |
| 47 | + const isEqual = (stack[stack.length - 1] === map[char]) |
| 48 | + if (isEqual) { stack.pop(); continue; } |
| 49 | + |
| 50 | + return false; |
23 | 51 | }
|
24 |
| - return stack.length == 0; |
| 52 | + |
| 53 | + return (stack.length === 0); |
25 | 54 | };
|
0 commit comments