Leetcode Valid Parentheses in Javascript
문제
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.
접근
스택, 큐로 풀면 되는 문제지만 다른 방식으로 풀어보려고 interative하게 접근해보았다.
var isValid = function(s) {
let map = new Map();
map.set('{','}');
map.set('(',')');
map.set('[',']');
const arr = s.split("");
for(let i=0; i<arr.length; i++){
const curr = arr[i];
for(let j=i+1; j<arr.length; j++){
if(arr[j] === map.get(curr)){
arr.splice(arr.indexOf(curr));
arr.splice(arr.indexOf(map.get(curr)));
}
console.log(arr);
}
}
return arr.length > 0 ? false : true;
};
앞에선 나온 opening tag
에 맞추어서 뒤에 나오는 closing tag
를 삭제하는 방식으로 진행해보았는데
Input: s = "([)]"
Output: false
이 케이스를 true
로 리턴하기 때문에 통과하지 못하였다. 그래서 그냥 스택을 이용해서 풀었다.
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
let map = new Map();
map.set('{','}');
map.set('(',')');
map.set('[',']');
const arr = s.split("");
const stack = [];
for(let i=0; i<arr.length; i++){
const curr = arr[i];
if(map.has(curr)){
stack.push(curr);
}else{
if(stack.length === 0 || map.get(stack.pop()) !== curr){
return false;
}
}
}
return stack.length === 0;
};
괄호를 이용해 푸는 문제를 자주 접했는데, 괄호의 종류가 다양하다면 closing tag
를 찾을 때
let map = new Map();
map.set('{','}');
map.set('(',')');
map.set('[',']');
Map
을 통해서 찾는 방식이 유용해보인다.
Author And Source
이 문제에 관하여(Leetcode Valid Parentheses in Javascript), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@peppermint100/Leetcode-Valid-Parentheses-in-Javascript저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)