?
Ну ты напиши ее, условия там :3
Дана строка, содержащая скобки трёх видов (круглые, квадратные и фигурные) и любые другие символы. Посчитайте сколько скобок расставлено корректно а сколько нет. Например, в строке ([]{})[] скобки расставлены корректно, а в строке ([]] — нет. В первом случае правильно расставлено 8 скобок. Во втором случае указаны 2 скобки правильно, и 2 не правильно.
const data = [{ o: '[', c: ']'}, { o: '{', c: '}'}, { o: '(', c: ')'}]; const fun = (value) => { const arr = []; value.split('').forEach((letter) => { const tag = data.find(v => v.o === letter || v.c === letter); const isClosed = tag.c === letter; const lastItem = arr[arr.length - 1]; if (isClosed && tag.o === lastItem) { arr.pop(); } else { arr.push(letter); } }); arr.length ? console.log('Wrong array') : console.log('Correct array'); }; fun('([]{})'); // Correct array fun('([]{})[]'); // Correct array fun('([]]'); // Wrong array дальше уже доделывай под свои нужды чо надо)
const fn = (s) => { if (s.length % 2 !== 0) return false; const stack = []; const map = new Map([ ['(', ')'], ['[', ']'], ['{', '}'] ]); for (let i = 0 ; i < s.length ; i += 1) { if (map.has(s[i])) { stack.push(map.get(s[i])); } else if (s[i] !== stack.pop()) { return false; } } return stack.length === 0; };
const last = arr.at(-1)
Вариантов решения много😉
Обсуждают сегодня