指定された文字のすべての出現を指定された置換文字で置き換えることにより、文字列を変更します。

WBOY
リリース: 2023-09-08 10:17:02
転載
853 人が閲覧しました

指定された文字のすべての出現を指定された置換文字で置き換えることにより、文字列を変更します。

この質問では、文字ペア配列内の指定された文字に基づいて、指定された文字列の文字を置換する必要があります。 2 つの異なる解決策について説明します。最初の方法では、指定された文字列の文字と文字のペアを反復処理して各文字を置換します。

2 番目の方法では、長さ 26 の配列を使用して、各文字に関連付けられた置換文字を格納し、指定された文字列の文字を変更します。

問題ステートメント -N 個の小文字のアルファベットを含む文字列 str が与えられます。また、文字のペアを含む配列も与えられます。指定された文字列内のpairs[i][0]文字をpairs[i][1]に置き換える必要があります。

例例

リーリー リーリー

イラスト

ここで、「x」は「a」に置き換えられ、「y」は「b」に置き換えられ、「z」は「c」に置き換えられます。

リーリー リーリー

イラスト

文字列内の「a」は「e」に、「b」は「t」に、「e」は「f」に、「r」は「s」に置き換えられます。

方法 1

このメソッドでは、文字の各ペアを反復処理し、指定された文字列内の一致する文字を置き換えます。各ループの文字列を反復処理するには、2 つのネストされたループが必要です。

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

  • ステップ 1

    - 文字列のサイズを変数 'N' に格納し、配列を変数 'M' に格納します。

  • ステップ 2

    - 文字列のコピーを「temp」変数に保存します。

  • ステップ 3

    - for ループを使用して、ペアのリストを反復処理します。

  • ステップ 4

    -ループ内で、最初の文字を変数「a」に保存し、2 番目の文字を変数「b」に保存します。

  • ステップ 5

    - ネストされたループを使用して文字列を反復処理します。

  • ステップ 6

    -ネストされたループで、指定された文字列の現在の文字が「a」と等しい場合、一時文字列内の現在の文字を「b」に置き換えます。

  • ステップ 7

    - temp の値を返します。

    ###例### リーリー ###出力### リーリー
  • 時間計算量 - O(N*M)、N は文字列の長さ、M は文字ペア配列の長さです。

新しい文字列を temp 変数に格納するため、空間複雑度 - O(N)。

方法 2

このメソッドでは、サイズ 26 の配列を作成できます。その後、置換可能な文字を現在の文字の位置に保存できます。最後に、配列から置換可能な要素を取得し、文字列の各文字を更新します。

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

ステップ 1

- 文字列サイズを「N」として、配列サイズを「M」として取得します。

  • ステップ 2

    - 長さ 26 の「初期」配列と「最終」配列を定義します。

  • ステップ 3

    - 文字列をループし、str[Y] を "str[Y] - a" の最初と最後の配列インデックスに格納します。ここで、str[Y] - 'a' は、文字の ASCII 値に基づいて 0 ~ 25 のインデックスを与えます。

    最初と最後の配列の 'str[Y] - a' の位置に str[Y] を格納する理由は、文字列に文字が存在するが文字ペアには存在しない場合、それを変更しないままにしておくことができるためです。
  • ステップ 4 - 指定された文字ペアの配列を反復処理します。ループ内で、ネストされたループを使用して、初期配列を反復処理します。現在のペアの最初の文字が「初期」配列の文字と等しい場合、「最終」配列の文字は現在のペアの 2 番目の文字で更新されます。

  • ステップ 5

    -「結果」変数を定義し、空の文字列に初期化します。

  • ステップ 6

    - 入力文字列を反復処理し、現在の文字に対応する文字を「最終」配列から取得し、それを「結果」文字列に追加します。

  • ステップ 7

    - 「結果」文字列を返します。

    ###例### リーリー ###出力### リーリー
  • 時間計算量 - O(N)、ネストされたループ、定数反復のみ。
  • 空間複雑度 - O(1)。長さ 26 (定数) の配列を使用するためです。

以上が指定された文字のすべての出現を指定された置換文字で置き換えることにより、文字列を変更します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート