A string S consisting of N characters is called properly nested if:
Write a function:
function solution(S);
that, given a string S consisting of N characters, returns 1 if string S is properly nested and 0 otherwise.
For example, given S = ”(()(())())”, the function should return 1 and given S = ”())”, the function should return 0, as explained above.
Write an efficient algorithm for the following assumptions:
function solution(S) {
const stack = [];
for (let i = 0; i < S.length; i++) {
let lastItem = stack[stack.length - 1];
if (S[i] === '(') {
stack.push(S[i]);
} else {
if (lastItem !== '(') return 0;
stack.pop();
}
}
return stack.length ? 0 : 1;
}