Problem
- Write a function that takes a string of parentheses, and determines if the order of the parentheses is valid.
- The function should return ‘true’ if the string is valid, and ‘false’ if it’s invalid.
- 괄호의 순서가 유효하면 ‘true’를 반환하고, 그렇지 않으면 ‘false’를 반환한다.
Solution 01
function validParentheses(parens) {
let count = 0;
for (let i = 0; i < parens.length; i++) {
if (parens[i] === '(') {
count++;
}
if (parens[i] === ')') {
count--;
}
if (count < 0) {
return false;
}
}
return count === 0 ? true : false;
}
validParentheses('('); // false
validParentheses(')'); // false
validParentheses('()'); // true
validParentheses('(())'); // true
validParentheses('((()()))'); // true
validParentheses('(())((()())())'); // true
Solution 02
function validParentheses(parens) {
let count = 0;
for (let i = 0; i < parens.length && count >= 0; i++) {
count += parens[i] === '(' ? 1 : -1;
}
return count === 0;
}
validParentheses('('); // false
validParentheses(')'); // false
validParentheses('()'); // true
validParentheses('(())'); // true
validParentheses('((()()))'); // true
validParentheses('(())((()())())'); // true
Solution 03
function validParentheses(parens) {
const regExp = /\(\)/;
while (regExp.test(parens)) {
parens = parens.replace(regExp, '');
}
return !parens;
}
validParentheses('('); // false
validParentheses(')'); // false
validParentheses('()'); // true
validParentheses('(())'); // true
validParentheses('((()()))'); // true
validParentheses('(())((()())())'); // true