0%

[Leetcode] valid-parentheses

Leetcode - 20

Code 1 (Javascript)

  1. ({[ 은 배열에 push 한다.
  2. ]}) 은 짝이 맞을 경우 pop을 한다. 이때 배열의 가장 마지막 요소를 체크하면 된다. 만약 짝이 맞지 않을 경우 false를 반환한다.
  3. 배열에 아무것도 없으면 짝이 맞는 거니까 true를 반환한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
var isValid = function(s) {
let array = [];
for (char of s) {
switch (char) {
case ")":
if (array[array.length - 1] === "(") {
array.pop();
} else {
return false;
}
break;
case "}":
if (array[array.length - 1] === "{") {
array.pop();
} else {
return false;
}
break;
case "]":
if (array[array.length - 1] === "[") {
array.pop();
} else {
return false;
}
break;
default:
array.push(char);
}
}
return array.length ? false : true;
};

Code 2 (Javascript)

  • 미리 괄호들을 object로 선언. ([{을 키로, }])을 값으로 지정 후 짝이 맞는지를 판단하면 된다.
  • 이때 배열의 마지막 값은 stack.pop()으로 알아낸다. 키와 값이 맞지 않을 경우 false를 반환한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var isValid = function(s) {
let stack = [];
const pair = {
"(": ")",
"[": "]",
"{": "}"
};

for (let char of s) {
if (char in pair) stack.push(char);
else if (pair[stack.pop()] !== char) return false;
}

return stack.length ? false : true;
};