У меня простая проблема,
Учитывая строку S из скобок '(' и ')', мы добавляем минимальное количество скобок ('(' или ')' и в любых позициях), чтобы полученная строка скобок была действительной.
Формально строка в скобках действительна тогда и только тогда, когда:
Это пустая строка, или она может быть записана как AB (объединенная с B), где A и B - допустимые строки, или она может быть записана как (A),
где A - допустимая строка. Учитывая строку в скобках, верните минимальное количество скобок, которое мы должны добавить, чтобы полученная строка была действительной.
Это мое решение в JS,
const minAddToMakeValid = S => {
const stack = [];
let count = 0;
S.map(c => {
if(c === '('){
stack.push(c);
}
else if(c === ')' && stack[stack.length -1] === '('){
stack.pop();
}
else{
count ++;
}
});
return count + stack.length;
};
const S = "())";
console.log(minAddToMakeValid(S));
Я получаю следующую ошибку,
TypeError: S.map is not a function
at minAddToMakeValid (/Users/melissa/Dropbox/js/leetcode-js/bin/921_minAddToMakeParanthesisValid.js:4:7)
at Object.<anonymous> (/Users/melissa/Dropbox/js/leetcode-js/bin/921_minAddToMakeParanthesisValid.js:19:13)
at Module._compile (internal/modules/cjs/loader.js:721:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:732:10)
at Module.load (internal/modules/cjs/loader.js:620:32)
at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
at Function.Module._load (internal/modules/cjs/loader.js:552:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:774:12)
at executeUserCode (internal/bootstrap/node.js:342:17)
at startExecution (internal/bootstrap/node.js:276:5)