Слияние кода завершено, страница обновится автоматически
javascript function areBracesClosed(expression) { let stack = []; for (let i = 0; i < expression.length; i++) { if (expression[i] === '{') { stack.push(expression[i]); } else if (expression[i] === '}') { if (stack.length === 0) { return false; } stack.pop(); } } return stack.length === 0; } var expression = "{{}}{}{}"; //true var expressionFalse = "{}{{}"; //false console.log(areBracesClosed(expression)); // true console.log(areBracesClosed(expressionFalse)); // false
Функция areBracesClosed
принимает строку expression
и проверяет, правильно ли закрыты фигурные скобки.
// Напиши функцию, которая проверяет, закрыты ли фигурные скобки в заданном выражении
var expression = "{{}}{}{}"; //true
var expressionFalse = "{}{{}"; //false
// Только для выражений;
function getFu(x) {
let arr = Array.prototype.slice.call(x);
let obj = {};
let it = [];
console.log(arr);
for (var i = 0; i < arr.length; i++) {
// Если не добавлено
if (obj[arr[i]]) {
// Есть, повторяется
it.push(arr[i]);
} else {
obj[arr[i]] = arr[i];
}
}
// Кроме {} добавляем все повторяющиеся в массив
if (it.length % 2 === 0) {
// Четное
return true;
} else {
// Нечетное
return false;
}
}
console.log(getFu(expression));
// Полная версия от Jian:
// Для каждой открывающейся фигурной скобки { добавляем её в массив. Если встречаем закрывающуюся }, удаляем последнюю добавленную { из массива. Если массив пуст, а встречаем }, значит скобки не закрыты.
function isO(str) {
const arr = [];
for (let item of str) {
if (item === '{') {
arr.push(item);
} else if (item === '}') {
if (arr.length === 0) {
return false;
} else {
arr.pop();
}
}
}
if (arr.length === 0) {
return true;
} else {
return false;
}
}
console.log(isO('{}{{}{}}'));