ホームページ >バックエンド開発 >C++ >文字列内の各文字を、正確に X 回出現した後の K 番目の文字に置き換えます。

文字列内の各文字を、正確に X 回出現した後の K 番目の文字に置き換えます。

PHPz
PHPz転載
2023-09-11 12:37:021121ブラウズ

文字列内の各文字を、正確に X 回出現した後の K 番目の文字に置き換えます。

この問題では、文字列「str」、整数 K、および整数 X が与えられます。文字列「str」には、1 ~ 9 の整数のみが含まれます。この文字列に対して X 操作を実行する必要があります。この操作では、毎回、文字列内の文字の出現数を文字列内の文字に置き換える必要があります。ここでの頻度とは、文字列内の文字の数または値を指します。私たちのタスクは、指定された操作を X 回実行した後、k 番目の文字を返すことです。

###例### リーリー リーリー

イラスト

指定された操作を 3 回実行しました。

リーリー

    文字 str[0] の場合、頻度は 1、値は 1 であるため、1 は 1 回出現します。
  • 文字 str[1] の場合、頻度は 2、値は 2 であるため、2 は 2 回現れます。
  • 他の文字も同様です。
  • リーリー
  • つまり、ちょうど X 回後の文字列の K 番目の文字は 2 になります。したがって、答えは 2 です。
リーリー リーリー

上記で指定された文字列の例を見てきました。メソッド -

に移りましょう。

単純な方法

このメソッドでは、指定された操作を X 回実行することで新しい文字列を計算します。文字列を正確に X 回取得した後、文字列の K 番目の文字を返します。

###例###

上記のメソッドをよりよく理解するためにコードを見てみましょう -

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

時間と空間の複雑さ

時間計算量は指定された文字列数値に依存し、数値の x 乗と各数値の合計に等しくなります。

空間計算量は時間計算量とまったく同じです。 効率的な方法

これは、上記の方法の最適化されたバージョンです。ここで、毎回文字列を作成するのではなく、各憲章の範囲を X 回計算します。

ここでは、毎回、文字が文字値に対して時間の累乗で増加することが観察されます。

上記の方法の主な手順について以下で説明します -

x 倍の文字列の KthChar を格納する kthChar 変数を作成します

    X 回後の各文字の出現回数を保存する変数 tot を作成します
  • for ループを使用して文字列を反復処理し、次の手順を実行します
  • ->現在の文字の値を取得します
  • ->この値と X を使用すると、X 回後の現在の文字の範囲を取得できます。ご覧のとおり、キャラクターの強さの値は毎回 X

    ずつ増加します。

    pow(値, X)として。
  • -> 範囲を変数「tot」に保存して、X 倍後の文字列の長さを維持します

    -> X 回後の K 番目の文字が文字列の現在の長さ内にあるかどうかを確認します

    As (K

    kthChar を返す

    ###例### リーリー ###出力### リーリー

    時間と空間の複雑さ

  • 上記のコードの時間計算量は O(N) です。ここで、N は指定された長さのサイズです。
余分なスペースを使用していないため、上記のコードのスペース複雑さは O(1) です。

###結論は###

このチュートリアルでは、各文字をその頻度で正確に X 回置換した後、文字列内の K 番目の文字を見つけるプログラムを実装しました。素朴な方法と効果的な方法の 2 つの方法を実装しました。

以上が文字列内の各文字を、正確に X 回出現した後の K 番目の文字に置き換えます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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