Задать вопрос
@MishaXXL

Как сделать проверку на корректную вложенность в скобки ((([])){})?

Правильным ответом будут все корректно вложенные или закрытые поочередно скобки
const str = "()[]{}" // true
const str2 = "{[()]}" // true
const str3 = "({{{{}}}))" // false
const str4 = "((([])){})" // true


У меня получилось решить все, кроме const str4 = "((([])){})"
Как выполнить поиск по такому типу конструкции?
Из вариантов пришло в голову рекурсивно сделать через replaceпо кругу пуская варианты (), [], {}, но мне кажется это кринжовое решение

Текущее решение писалось по мере добавления непройденных кейсов и добавление их обработки
https://playcode.io/1851223

Сама задача
https://leetcode.com/problems/valid-parentheses/su...
  • Вопрос задан
  • 282 просмотра
Подписаться 2 Простой 2 комментария
Решения вопроса 1
pickHabr
@pickHabr
Костыльных дел мастер
/**
 * @param {string} s
 * @return {boolean}
 */
var isValid = function (s) {
    //hash function for partheses
    let map = { "}": "{", "]": "[", ")": "(" };
    let temp = [];



    //Iterates
    for(i in s){
        //if a index that matches a closing bracket - continue
        if(s[i] in map){
            //if the temp isn't empty, and the top of the stack is that closing bracket - pop it
            if(temp.length > 0 && temp[temp.length-1] === map[s[i]]){
                temp.pop();
            }
            //else we break it - return false
            else{
                return false;
            }
        }
        //else we push the opening bracket onto the stack
        else{
            temp.push(s[i]);
        }
    }
    //else we return true if the temp is empty
    return temp.length === 0;
};


Прямо в литкоде есть решения, можно открыть Solutions, отфильтровать по языку и читать с описанием, можно перейти к all submissions и выбрать самое быстрое решение.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы