Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Составить правлильную последовательность скобок, если это невозможно вернуть null
- correctBrackets("[}"); // "[]"
- correctBrackets("[()}"); // "[()]"
- correctBrackets("[[[)])"); // "[[[]]]"
- correctBrackets("<{[(>}])"); // "<{[()]}>"
- correctBrackets("]]"); // null
- correctBrackets("[[[))"); // null
- correctBrackets("{((])]"); // "{(())}"
- */
- let str = '<{[(>}])';
- let opening = {
- '[': ']',
- '{': '}',
- '(': ')',
- '<': '>',
- };
- const correctBrackets = str => {
- let stack = [];
- let res = '';
- for (let i = 0; i < str.length; i++) {
- let skobka = str[i];
- if (opening[skobka]) { // если скобка открывающая
- stack.push(skobka); // добавляем ее в стэк
- } else { // если скобка закрывающая
- if(stack.length === 0) { // проверяем если в стэке пусто значит правильную последовательность построить нельзя
- return null;
- }
- let open = stack.pop(); // берем последнюю открытую скобку из стэка
- skobka = opening[open]; // находим ее закрывающую
- }
- res += skobka; // добавляем скобку к результату
- }
- if (stack.length > 0) { // проверяем если в стэке еще что то есть значит правильную последовательность построить нельзя
- return null;
- }
- return res;
- }
- console.log(skobki(str));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement