Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
An input string is valid if:
var isValid = function(s) {
let stack = [];
const left = ['(','{','['];
for (var i=0;i<s.length;i++){
if (left.includes(s[i])) {
stack.push(s[i]);
} else {
if (stack[stack.length-1]==='(' && s[i]===')'){
stack.pop();
} else if (stack[stack.length-1]==='[' && s[i]===']'){
stack.pop();
} else if (stack[stack.length-1]==='{' && s[i]==='}'){
stack.pop();
}
}
}
if (stack.length>0) {
return false
} else {
return true
}
};
"]"
문자가 들어오면 오류가 발생했다. 해당 문자는 오른쪽 괄호 하나만 있기 때문에 처음부터 stack배열에 들어가지 않아서 올바른 문자열이 아니지만 true 값을 반환하기 때문이다.var isValid = function(s) {
const paris = {'(':')','{':'}','[':']'};
let stack = [];
for (var i=0;i<s.length;i++) {
if (s[i] in paris) {
stack.push(s[i]);
} else {
let close = stack.pop();
if (paris[close]!==s[i]){
return false
}
}
}
return stack.length === 0
};