私は、このタスクを持っての繰り返しのインターリーブであるかどうかを確認します。シーケンスは二つの文字列
X(英語のアルファベットと思う)ある有限固定アルファベットを超える文字列とします。 整数kを指定すると、xのk個のコピーを連結した文字列を表すのにx^k を使用します。 x がHELLOの場合、x^3 はHELLOHELLOHELLOです。 xの繰り返しは、 であり、いくつかの整数kについてx^k という接頭辞があります。したがって、HELLとHELLOHELLはともに HELLOの繰り返しです。 2つの文字列xとyのインターリーブは、xの繰り返し をyの繰り返しでシャッフルすることによって得られる任意の文字列です。例えば、HELwoLOHELLrldwOHは、 HELLOとworldのインターリーブです。 3つの文字列x、y、zを入力とし、zが のxとyのインターリーブであるかどうかを決定するアルゴリズムを記述します。
私は(私たちは、z
単語へのポインタ、およびバイナリ木の種類をのみ、指数複雑性を有する溶液で来ていました。すべてのノードでは、私は可能な単語のxとyの現在の状態を(持っています私はzを処理しています。ノードは、zの次の文字がx単語、y単語、またはno単語に追加できるかどうかによって、1/2/no childrenがあります)。指数関数的な複雑さ?