C++の式でバランスの取れた括弧を確認します
式があるとします。式にはいくつかの括弧があります。括弧のバランスが取れているかどうかを確認する必要があります。括弧の順序は()、{}、[]です。 2つの文字列があるとします。 「()[(){()}]」これは有効ですが、「{[}]」は無効です。
タスクは簡単です。これを行うには、スタックを使用します。解決策を得るには、次の手順に従う必要があります-
- 式がなくなるまで式をトラバースします
- 現在の文字が(、{または[のように角かっこを開いている場合は、スタックにプッシュします
- 現在の文字が)、}、]のように閉じ括弧である場合は、スタックからポップし、ポップされたブラケットが現在の文字の対応する開始ブラケットであるかどうかを確認します。そうでない場合は、バランスが取れていません。
- ストリングが使い果たされた後、スタックに開始ブラケットが残っている場合、ストリングはバランスが取れていません。
例
#include <iostream> #include <stack> using namespace std; bool isBalancedExp(string exp) { stack<char> stk; char x; for (int i=0; i<exp.length(); i++) { if (exp[i]=='('||exp[i]=='['||exp[i]=='{') { stk.push(exp[i]); continue; } if (stk.empty()) return false; switch (exp[i]) { case ')': x = stk.top(); stk.pop(); if (x=='{' || x=='[') return false; break; case '}': x = stk.top(); stk.pop(); if (x=='(' || x=='[') return false; break; case ']': x = stk.top(); stk.pop(); if (x =='(' || x == '{') return false; break; } } return (stk.empty()); } int main() { string expresion = "()[(){()}]"; if (isBalancedExp(expresion)) cout << "This is Balanced Expression"; else cout << "This is Not Balanced Expression"; }
出力
This is Balanced Expression
-
Pythonの式O(1)スペースO(N ^ 2)時間計算量でバランスの取れた括弧を確認します
これらの角かっこ(、)、{、}、[および]を含む文字列strがあるとすると、角かっこがバランスしているかどうかを確認する必要があります。開閉ブラケットのタイプが同じタイプの場合、ブラケットはバランスが取れていると言えます。ブラケットは正しい順序で閉じられます。 したがって、入力が{([])}のような場合、出力はTrueになります。 これを解決するには、次の手順に従います- cnt:=0 i:=0 j:=-1 関数solve()を定義します。これにはs、tempがかかります cnt:=cnt-1 s:=sからの新しいリスト -1でs[j]がtempと同じ場合、 s [i
-
Pythonでバランスの取れた括弧を確認します
多くの場合、式に存在する角かっこに関して式のバランスが取れているかどうかを確認する必要があります。バランスが取れているということは、左角かっこごとに対応する右角かっこがあり、角かっこの順序が適切に並べられていることを意味します。これは、角かっこが頻繁に使用されるプログラムや数式を作成する際に重要です。このトピックでは、角かっこを含む式のバランスが取れているかどうかをプログラムで確認する方法を説明します。 完全な排除 この方法では、最も内側の角かっこのペアを見つけて、それらをnull値に置き換えます。ブラケットのすべてのペアが交換されるまで、これを続けます。それでも括弧が残っている場合、式はバ