Нужно найти баланс между открывающим и закрывающим элементом , вообщем код написал но проблема в том что могу приходить одинаковый и открывающий и закрывающей элемент как мне это проверить , получается что в стек идет и открывающий и закрывающий
Например что приходит в качестве аргумента строки ' '|()|' или '111115611111111222288888822225577877778775555666677777777776622222' '
вот даны пары :
const config1 = [['(', ')']];
const config2 = [['(', ')'], ['[', ']']];
const config3 = [['(', ')'], ['[', ']'], ['{', '}']];
const config4 = [['|', '|']];
const config5 = [['(', ')'], ['|', '|']];
const config6 = [['1', '2'], ['3', '4'], ['5', '6'], ['7', '7'], ['8', '8']];
const config7 = [['(', ')'], ['[', ']'], ['{', '}'], ['|', '|']];
сам мой код :
function check(arr, bracketsConfig) {
let strArr = bracketsConfig;
let open = [];
let close = [];
let stack = [];
for (var i = 0;i<strArr.length;i++){
open.push(strArr[i][0])
close.push(strArr[i][1])
}
for (let j = 0; j<arr.length; j++){
if(open.includes(arr[j])&& !close.includes(arr[j]) ){
stack.push(arr[j])
}else{
if(close.indexOf(arr[j]) === open.indexOf( stack[stack.length-1] )){
let p = stack.pop()
console.log(close.includes(p))
}else{
return false
}
}
}
return stack.length === 0
}