-4

私にはいくつかの特定のタスクがあります。"(()[]<>)" のような文字列や、これによく似た文字列があります。私のインタビューの質問の質問は、文字列が正しいか間違っているかをチェックする方法でした。例: "()[]<>" - true、"([)" - false、"[(])" - false、"([<>])" - true。どうもありがとうございました!

4

1 に答える 1

4

これを処理するには、スタックを使用する必要があります。

新しい左括弧が見つかったら、スタックにプッシュします。

閉じ括弧が見つかったら、スタックの一番上の要素を調べて、一致するかどうかを確認します。つまり、")" を見つけた場合、スタックの最後の要素は "(" でしたか?

そうであれば、スタックのその要素をポップします。そうでない場合は、「正しくない」文字列を取得したことになり、それ以上の処理を停止できます。

また、文字列の最後に到達すると、スタックに何かが残っている場合、終了していない括弧があることがわかります。

于 2013-11-02T10:43:18.693 に答える