指定された文字列 S に関連する特定の課題を解決します。文字列 S には英小文字のみが含まれており、文字を削除する場合は特定の制約に従う必要があります。
指定された制約は -
です文字列 S
文字列内に複数回出現する文字のみを削除できます。
連続した文字のみ削除できます。次の手順を使用して、文字列 S から文字 -
文字列 S を反復処理するときに複数回出現するすべての文字を検索します。文字ごとに文字列 S を再度反復して、連続して出現する文字をすべて検索します。
文字の連続出現数が反復回数以上の場合、最初の N 文字の出現を削除します。
すべての反復が完了するまで、ステップ 2 と 3 を続けます。
最後に、最後の文字列 S を返すことで、N 回の操作後に N 文字を削除した後の文字列の値を見つけることができます。
###文法###以下は、指定された制約の下で文字列 S の N 文字を削除する N 回の操作の後に値を見つける関数の構文です -
リーリーこの関数は 2 つのパラメータを受け入れます -
- 実行される操作の数を表す整数。
- 入力文字列を表す文字列。
最後に、この関数は、ソートされた頻度配列内の各文字の二乗頻度を合計することによって文字列の値を計算し、それを整数として返します。
###アルゴリズム###N 文字の削除処理の後、アルゴリズムは次の制約の下で文字列の値を計算します。入力は数値 N と文字列 S で構成されます。
ステップ 2
ステップ 3
ステップ 4
ステップ 5
ステップ 6
この手法が機能するのは、この問題では入力文字列 S から N 個の文字を削除する必要があるためです。これは N 個の操作を実行するようなもので、各操作で文字列内の最も一般的な文字が 1 回削除されます。タスクの制約により、実際に文字列から文字を削除することはできないため、各操作の頻度配列内の最も一般的な文字の頻度を減らすことによってこの操作をシミュレートする必要があります。
方法1
例 1
リーリー ###出力### リーリー方法 2
要約すると、直接的な手法を使用して N 回の操作後に値を取得することができ、これにより、上記の制約の下で文字列 "S" から N 個の文字を削除できます。まず、頻度配列を初期化して、文字列内の文字数を追跡しましょう。 N 個の文字を削除したら、頻度配列から最大数の文字を削除するプロセスを繰り返すことができます。このプロセスは合計 N 回繰り返すことができます。
この方法を使用すると、N 回の操作 (N 文字の削除を含む) の後で文字列「S」の値を迅速に決定できます。この方法にはソート段階が存在するため、このソリューションの時間計算量は O(N logN) であり、ほとんどの実用的なアプリケーションでは許容可能です。
以上が指定された制約の下で N 回の操作で文字列 'S' から N 個の文字を削除した後の値を検索しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。