ホームページ  >  記事  >  バックエンド開発  >  すべての回文単語の出現順序を逆にして文を修正します

すべての回文単語の出現順序を逆にして文を修正します

WBOY
WBOY転載
2023-08-27 10:01:12690ブラウズ

###############問題文###

合計 N 個の単語を含む文字列 str が与えられます。指定された文字列内のすべての回文単語を検索し、すべての回文単語の順序を逆にして新しい文字列を作成する必要があります。 すべての回文単語の出現順序を逆にして文を修正します ###例### ###入力### リーリー ###出力### リーリー

イラスト

この文字列には、nayan、navjivan、eye の 3 つの回文が含まれています。 3 つの単語すべての順序を逆にし、他の単語はすべて同じにしました。

###入力### リーリー ###出力### リーリー

イラスト

文字列には回文単語が含まれていないため、同じ出力が得られます。

###入力### リーリー ###出力### リーリー

イラスト

単一の回文単語のみを含む文字列と同じ出力が得られます。

方法1

このメソッドでは、まず文字列を単語に分割します。その後、すべての回文単語をフィルタリングします。次に、すべての回文の順序を逆にします。

最後に、文字列を反復処理し、現在の単語が回文単語である場合は、逆の順序で別の回文単語に置き換えます。

###アルゴリズム###

ステップ 1

- 結果の文字列を返す文字列を引数として渡して、reversePlaindromic() 関数を実行します。

ステップ 2

- 単語が回文であるかどうかを確認する isPalindrome() 関数を作成します。

ステップ 2.1

- 「開始」を 0 に初期化し、「終了」を文字列長 – 1 に初期化します。

ステップ 2.2
    - while ループを使用して文字列を反復処理し、最初と最後の文字を比較し、2 番目と最後から 2 番目の文字を比較します。一致しない文字がある場合、回文文字列ではないため false が返されます。
  • ステップ 2.3
  • - 文字列が回文の場合は true を返します。
  • ステップ 3
  • - 文字列の単語を格納するベクトルを作成します。さらに、単語を保存する「temp」変数を定義します。
  • ステップ 4
  • - for ループを使用して文字列を反復処理し、文字がスペース (‘ ’) に等しくない場合は一時値に文字を追加します。それ以外の場合は、temp の値を allWords ベクトルにプッシュします。
  • ステップ 5
  • - allWords ベクトルを反復処理し、isPalindrome() 関数を使用して現在の単語が回文であるかどうかを確認します。その場合は、その単語を「palindromWords」ベクトルにプッシュします。
  • ステップ 6
  • - 「回文単語」リストを反転します。
  • ステップ 7
  • - ここで、「allWords」ベクトルを再度反復処理し、現在の単語が回文であるかどうかを確認します。その場合は、「palindromWords」リストにある適切な単語に置き換えてください。
  • ステップ 8
  • - 「palindromWords」リストを反復処理し、すべての単語を結果変数に追加して文字列を作成します。結果の文字列を返します。
  • ###例### リーリー ###出力### リーリー

  • 時間計算量

    - 長さ N の文字列を反復するため、O(N)。

  • 空間複雑度

    - O(K) 単語の保存にリストを使用するため、k は文字列内の単語の総数です。

    ###結論は###
  • 私たちは文からすべての回文単語を取り出し、逆の順序で追加することを学びました。上記のコードでは、プログラマは何か新しいことを学ぶために isPalindrome() 関数の実装を変更してみることができます。

以上がすべての回文単語の出現順序を逆にして文を修正しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。