4

2つの文字列がある場合str1 & str2

str1 = I to cricket chess 

str2 = like play and 

出力を次のようにします。

「クリケットとチェスをするのが好きです」

pushこれはとpopの操作を使用して実行できますかstack。アルゴリズムは、プログラミング言語から独立している必要があります。上記の文字列は任意の長さにすることができます。

4

2 に答える 2

2

とてもシンプルです。push最初の文字列からスタックへpushの最初の単語、次に2番目の文字列からの最初の単語、次に2番目の単語、次に3番目の単語などに対して同じことを行う必要があります。

その後pop、スタックの各要素とpush2 番目のスタックに、シーケンスを反転する必要があります。次に、2 番目のスタックの各要素だけpopを結果の文字列に追加します。

于 2012-10-22T05:48:06.093 に答える
1

あなたが与えたものから、いくつかの仮定を立てる必要があります。

仮定:

  1. 文中の単語が両方の文字列の間にインターリーブされている
  2. 1 つの文字列は、他の文字列よりも多くても 1 単語長くなります
  3. スペースは単語の区切りです。

アルゴリズムは次のようになります。

  1. 各文字列について:
  2. 文字列をスペース文字で配列に分割します
  3. 最長の長さの配列を見つける
  4. 配列の長さの長いものから始めます (これを arrayB と呼び、もう一方を arrayO と呼びます)。
  5. 配列の最後から、
  6. arrayB の要素をスタックにプッシュし、
  7. arrayO の要素をスタックにプッシュし、
  8. 各配列のすべての要素がプッシュされるまで、2 つの配列を交互に繰り返します。
  9. 終了したら、スタックを配列にポップし、
  10. 区切り文字としてスペースを使用して、配列を文字列に結合します。
于 2012-10-22T05:46:19.153 に答える