p-(q-r)-s のような代数文字列が与えられた場合、括弧を削除して、その文字列を同じ数学的結果を持つ文字列に変換する必要があります。したがって、文字列 p-(q-r)-s は p-q r-s に変換され、同じ数学的結果が得られます。これを実現するには、スタックを使用して、括弧式内の次のシンボルを反転する必要があるかどうかを追跡します。
0 は反転を意味するか反転しないことを意味します
1 は - または反転
したがって、括弧が開くたびに、括弧内の記号が反転しているかどうかに応じて 0 または 1 を押します。閉じ括弧が表示されたら、スタックをポップします。
注 - 括弧で始まる文字列は考慮されません。このタイプの文字列をクリーンアップする必要があります。たとえば、s="(p-(q r))" は s="p-(q r)" でなければなりません。この場合、インデックス 1 から長さ -2 まで、次に 0 から長さ -1 までループを簡単に実行できます。
いくつかの入力シナリオを見てみましょう
メソッドの入力が文字列データ型の数値であると仮定すると、結果リストには括弧を除いた式が得られます -
リーリーメソッドの入力がかっこで始まると仮定すると、結果リストでは次のようにかっこなしの式が得られます -
リーリー注意 - プログラム内では括弧で始まる文字列は考慮されません。このタイプの文字列をクリーンアップする必要があります。たとえば、s="(a (b-c-d)-e)" は s="a (b-c-d)-e" でなければなりません。この場合、インデックス 1 から長さ -2 まで、次に 0 から長さ -1 までループを簡単に実行できます。
ここでは、括弧を含む多項式を入力として使用できるため、結果リストには次の式が得られます -
リーリーこれを 2 次多項式に適用しましたが、この方法は高次の多項式にも使用できます。
###例###それでは、C メソッドを使用して、and - 演算子を含む上記の文字列から括弧を削除しましょう。与えられた問題に対する C プログラムは次のとおりです -
リーリー ###出力### リーリー ###結論は###単純なスタックを使用して、各ブラケットの開口部のフラグを追跡します。次に、記号を使用して値を 1 つずつ変換します。重要なのは、括弧を使用して記号の変更を追跡する方法を理解することです。そうすれば、問題はより簡単になります。
以上がC++ を使用して + 演算子と - 演算子を含む代数文字列から括弧を削除するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。