検索
ホームページバックエンド開発C++指定された制約の下で N 回の操作で文字列 'S' から N 個の文字を削除した後の値を検索します

指定された制約の下で N 回の操作で文字列 S から N 個の文字を削除した後の値を検索します

文字列の使用仕様は何ですか?

指定された文字列 S に関連する特定の課題を解決します。文字列 S には英小文字のみが含まれており、文字を削除する場合は特定の制約に従う必要があります。

指定された制約は -

です
  • 文字列 S

  • に小文字の英字が含まれています
  • 文字列内に複数回出現する文字のみを削除できます。

  • 連続した文字のみ削除できます。次の手順を使用して、文字列 S から文字 -

  • を削除できます。
  • 文字列 S を反復処理するときに複数回出現するすべての文字を検索します。文字ごとに文字列 S を再度反復して、連続して出現する文字をすべて検索します。

  • 文字の連続出現数が反復回数以上の場合、最初の N 文字の出現を削除します。

  • すべての反復が完了するまで、ステップ 2 と 3 を続けます。

最後に、最後の文字列 S を返すことで、N 回の操作後に N 文字を削除した後の文字列の値を見つけることができます。

###文法###

このトピックは、特定の文字列に対して特定の数の操作を実行することによる操作に関するコーディングの質問です。操作ごとに、文字列内の最も一般的な文字が削除され、残りの各文字の頻度が更新されます。この操作を N 回実行した後、残りの各文字の頻度を 2 乗して合計することで、文字列の最終値が計算されます。この問題の目標は、文字列と数値 N を入力として受け取り、指定された制約に従って N 回の操作を実行した後に文字列の最終値を出力するプログラムを作成することです。

以下は、指定された制約の下で文字列 S の N 文字を削除する N 回の操作の後に値を見つける関数の構文です -

リーリー

この関数は 2 つのパラメータを受け入れます -

  • n

    - 実行される操作の数を表す整数。

  • s

    - 入力文字列を表す文字列。

  • この関数は、まず配列を使用して、入力文字列内の各文字の頻度を計算します。次に、この頻度配列は降順にソートされ、N 回実行されます。各操作で、最も一般的な文字の頻度が減り、頻度配列が再度ソートされます。

最後に、この関数は、ソートされた頻度配列内の各文字の二乗頻度を合計することによって文字列の値を計算し、それを整数として返します。

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

N 文字の削除処理の後、アルゴリズムは次の制約の下で文字列の値を計算します。入力は数値 N と文字列 S で構成されます。

ステップ 1
    - 配列を使用して、入力文字列内の各文字の頻度を決定します。
  • ステップ 2
  • - この周波数配列を降順に並べ替えます。
  • ステップ 3
  • - N 回の操作を実行します。各操作により、頻度配列内の最も頻度の高い文字の頻度が減ります。
  • ステップ 4
  • - 周波数配列を再配置します。
  • ステップ 5
  • - 並べ替えられた頻度配列内の各文字の二乗頻度を加算して、文字列の値を決定します。
  • ステップ 6
  • - N 回の操作の後、文字列の値は二乗の合計になります。
  • この手法が機能するのは、この問題では入力文字列 S から N 個の文字を削除する必要があるためです。これは N 個の操作を実行するようなもので、各操作で文字列内の最も一般的な文字が 1 回削除されます。タスクの制約により、実際に文字列から文字を削除することはできないため、各操作の頻度配列内の最も一般的な文字の頻度を減らすことによってこの操作をシミュレートする必要があります。

  • 従うべき方法

方法1

コードを使用して、サンプル文字列 S とさまざまな操作 N を初期化します。ループ内の各操作の後、次の文字より大きい最初の文字が削除されます。削除しない場合は、最後の文字が削除されます。すべての操作が完了すると、文字列の最終値が出力されます。

ここで、コードは N が文字列 S の長さ以下であることを前提としています。 N が S より長い場合、コードは期待どおりに実行されません。

例 1

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

方法 2

このコードでは、まず配列を使用して、入力文字列内の各文字の頻度を決定します。次に、N 個の操作を実行して、各操作で最も一般的な文字の頻度を減らし、頻度配列を再度並べ替えます。次に、この周波数配列を降順に並べ替えます。

文字列の値は、ソートされた頻度配列内の各文字の二乗頻度を加算することによって最終的に決定されます。

例 2

リーリー ###出力### リーリー ###結論は###

要約すると、直接的な手法を使用して N 回の操作後に値を取得することができ、これにより、上記の制約の下で文字列 "S" から N 個の文字を削除できます。まず、頻度配列を初期化して、文字列内の文字数を追跡しましょう。 N 個の文字を削除したら、頻度配列から最大数の文字を削除するプロセスを繰り返すことができます。このプロセスは合計 N 回繰り返すことができます。

この方法を使用すると、N 回の操作 (N 文字の削除を含む) の後で文字列「S」の値を迅速に決定できます。この方法にはソート段階が存在するため、このソリューションの時間計算量は O(N logN) であり、ほとんどの実用的なアプリケーションでは許容可能です。

以上が指定された制約の下で N 回の操作で文字列 'S' から N 個の文字を削除した後の値を検索しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はtutorialspointで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
誇大広告を超えて:今日のCの関連性を評価します誇大広告を超えて:今日のCの関連性を評価しますApr 14, 2025 am 12:01 AM

Cは、現代のプログラミングにおいて依然として重要な関連性を持っています。 1)高性能および直接的なハードウェア操作機能により、ゲーム開発、組み込みシステム、高性能コンピューティングの分野で最初の選択肢になります。 2)豊富なプログラミングパラダイムとスマートポインターやテンプレートプログラミングなどの最新の機能は、その柔軟性と効率を向上させます。学習曲線は急ですが、その強力な機能により、今日のプログラミングエコシステムでは依然として重要です。

Cコミュニティ:リソース、サポート、開発Cコミュニティ:リソース、サポート、開発Apr 13, 2025 am 12:01 AM

C学習者と開発者は、Stackoverflow、RedditのR/CPPコミュニティ、CourseraおよびEDXコース、Github、Professional Consulting Services、およびCPPCONのオープンソースプロジェクトからリソースとサポートを得ることができます。 1. StackOverFlowは、技術的な質問への回答を提供します。 2。RedditのR/CPPコミュニティが最新ニュースを共有しています。 3。CourseraとEDXは、正式なCコースを提供します。 4. LLVMなどのGitHubでのオープンソースプロジェクトやスキルの向上。 5。JetBrainやPerforceなどの専門的なコンサルティングサービスは、技術サポートを提供します。 6。CPPCONとその他の会議はキャリアを助けます

C#対C:各言語が優れている場所C#対C:各言語が優れている場所Apr 12, 2025 am 12:08 AM

C#は、開発効率とクロスプラットフォームのサポートを必要とするプロジェクトに適していますが、Cは高性能で基礎となるコントロールを必要とするアプリケーションに適しています。 1)C#は、開発を簡素化し、ガベージコレクションとリッチクラスライブラリを提供します。これは、エンタープライズレベルのアプリケーションに適しています。 2)Cは、ゲーム開発と高性能コンピューティングに適した直接メモリ操作を許可します。

Cの継続的な使用:その持久力の理由Cの継続的な使用:その持久力の理由Apr 11, 2025 am 12:02 AM

C継続的な使用の理由には、その高性能、幅広いアプリケーション、および進化する特性が含まれます。 1)高効率パフォーマンス:Cは、メモリとハードウェアを直接操作することにより、システムプログラミングと高性能コンピューティングで優れたパフォーマンスを発揮します。 2)広く使用されている:ゲーム開発、組み込みシステムなどの分野での輝き。3)連続進化:1983年のリリース以来、Cは競争力を維持するために新しい機能を追加し続けています。

CとXMLの未来:新たなトレンドとテクノロジーCとXMLの未来:新たなトレンドとテクノロジーApr 10, 2025 am 09:28 AM

CとXMLの将来の開発動向は次のとおりです。1)Cは、プログラミングの効率とセキュリティを改善するためのC 20およびC 23の標準を通じて、モジュール、概念、CORoutinesなどの新しい機能を導入します。 2)XMLは、データ交換および構成ファイルの重要なポジションを引き続き占有しますが、JSONとYAMLの課題に直面し、XMLSchema1.1やXpath3.1の改善など、より簡潔で簡単な方向に発展します。

最新のCデザインパターン:スケーラブルで保守可能なソフトウェアの構築最新のCデザインパターン:スケーラブルで保守可能なソフトウェアの構築Apr 09, 2025 am 12:06 AM

最新のCデザインモデルは、C 11以降の新機能を使用して、より柔軟で効率的なソフトウェアを構築するのに役立ちます。 1)ラムダ式とstd :: functionを使用して、オブザーバーパターンを簡素化します。 2)モバイルセマンティクスと完全な転送を通じてパフォーマンスを最適化します。 3)インテリジェントなポインターは、タイプの安全性とリソース管理を保証します。

Cマルチスレッドと並行性:並列プログラミングのマスタリングCマルチスレッドと並行性:並列プログラミングのマスタリングApr 08, 2025 am 12:10 AM

cマルチスレッドと同時プログラミングのコア概念には、スレッドの作成と管理、同期と相互排除、条件付き変数、スレッドプーリング、非同期プログラミング、一般的なエラーとデバッグ技術、パフォーマンスの最適化とベストプラクティスが含まれます。 1)STD ::スレッドクラスを使用してスレッドを作成します。この例は、スレッドが完了する方法を作成し、待つ方法を示しています。 2)共有リソースを保護し、データ競争を回避するために、STD :: MutexおよびSTD :: LOCK_GUARDを使用するための同期と相互除外。 3)条件変数は、std :: condition_variableを介したスレッド間の通信と同期を実現します。 4)スレッドプールの例は、スレッドプールクラスを使用してタスクを並行して処理して効率を向上させる方法を示しています。 5)非同期プログラミングはSTD :: ASを使用します

Cディープダイブ:メモリ管理、ポインター、およびテンプレートの習得Cディープダイブ:メモリ管理、ポインター、およびテンプレートの習得Apr 07, 2025 am 12:11 AM

Cのメモリ管理、ポインター、テンプレートはコア機能です。 1。メモリ管理は、新規および削除を通じてメモリを手動で割り当ててリリースし、ヒープとスタックの違いに注意を払います。 2。ポインターにより、メモリアドレスを直接操作し、注意して使用します。スマートポインターは管理を簡素化できます。 3.テンプレートは、一般的なプログラミングを実装し、コードの再利用性と柔軟性を向上させ、タイプの派生と専門化を理解する必要があります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター