0

ユーザーがいくつかの単純な html タグを入力するフォームがあり、次のことを確認するためにテキストを解析したいと考えています。

すべての開始タグには一致する終了タグがあります

これはエンド ユーザー向けの単純化されたマークアップであり、厳密すぎません。

したがって、これらは合格します:

<text>hello world<text>
<text>hello world</text>
<123>

そして、これは失敗します:

<hello> ><

したがって、最初の例からわかるように、厳密なhtmlではありません。基本的には、開き括弧と閉じ括弧の数が同じであること、およびそれらが正しい順序で表示されることを保証するだけです。つまり、閉じ括弧で始めることはできません。そして、エンドブラケットがあります。

4

3 に答える 3

0

スタック データ構造が必要です。基本的に、入力を読み取り、開始タグに遭遇するたびに、スタックにプッシュします。終了タグに遭遇したら、スタックから最後の項目を取り出して比較します。それらは常に等しい必要があります。最後に、スタックは空になるはずです。

中括弧が正しいかどうかを確認する場合は、アルゴリズムが少し異なります。閉じ括弧が検出された場合、スタックの一番上をポップします。これは開き括弧でなければなりません。

于 2012-09-25T16:38:13.407 に答える
0

これは別の質問ですが、Scala で多数の if をプログラムする方法と非常によく似た関数です。その質問の上位の回答を参照してください。ただし、渡される「状態」は「オープンは何回ありましたか?」が、「内側か外側か」のブール値です。

于 2012-09-25T15:54:50.380 に答える