Как посчитать, какая скоба разбалансирована? - PullRequest
0 голосов
/ 10 июля 2020

В программе проверить, сбалансированы ли скобки или нет? Моя программа работает правильно, она выполняет свою работу. Единственная проблема, с которой я сейчас сталкиваюсь, заключается в том, что я не могу подсчитать, какая скобка не соответствует. Например, в приведенном ниже вводе

[ ] ( ( ) 

вывод должен быть

3

, потому что третья скобка не имеет соответствия. Но cc для моего кода это

5

, потому что отсутствует закрывающая 4-я скобка, которая должна быть на месте 5

Так что кто-нибудь, пожалуйста, помогите мне понять, как я могу это сделать

Вот часть моего кода, которая выполняет работу

for i in n:
    if i in "{([":
        arr.append(i)
        count += 1
    elif i in "})]":
        if len(arr) == 0:
            flag = 0
            break
        temp = arr.pop()
        if i == "}" and temp == "{" :
            count += 1
            continue
        elif i == ")" and temp == "(":
            count += 1
            continue
        elif i == "]" and temp == "[":
            count += 1
            continue
        else:
            flag = 0
            break

И, наконец, количество отпечатков

1 Ответ

1 голос
/ 10 июля 2020

Вы должны использовать стек , чтобы отслеживать, какие фигурные скобки вы видели. Вы должны поместить sh в стопку на открывающей скобке и вытолкнуть из нее на закрывающей скобе. При анализе каждой фигурной скобки запишите ее индекс в строке (например, поместив в стек не только тип фигурной скобки, но, возможно, кортеж символа и его индекс, например ('[', 1) или ('(', 3). вы закончили синтаксический анализ, в стеке останутся только фигурные скобки без совпадений с их индексами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...