この問題では、各文字列プレフィックスに対して指定された操作を実行する必要があります。最後に、各文字の頻度をカウントする必要があります。
貪欲アルゴリズムを使用して、この問題を解決できます。長さ K の各プレフィックスを取得し、指定された条件に従ってその文字を更新する必要があります。マップを使用して、最終的な文字列内の文字の頻度を計算できます。
問題文 - N 個の小文字のアルファベットを含む文字列 tr が与えられています。さらに、合計 26 個の要素を含むマッピング リストが与えられます。各要素は、その値に基づいて小文字にマップされます。たとえば、mapping[0] は「a」にマップされ、mapping[1] は「b」にマップされ、mapping[25] は「z」にマップされます。さらに、マップされた配列には 1 または -1 が含まれます。
次のことを行う必要があります。
長さ K のプレフィックスから最大文字数を取得し、「マッピング」配列からマッピング値を取得します。
マップされた値が 1 の場合、すべてのプレフィックス要素を 1 ずつ増やします。
マップされた値が -1 の場合、すべてのプレフィックス要素を 1 ずつ減分します。
ここで、要素の追加とは、「a」 -> 「b」、「b」 -> 「c」、… 「z」 -> 「a」を意味します。
要素の減少は、「a」->「z」、「b」->「a」、…を意味します。 「z」→「y」。
長さ 1
例例
######入力###### リーリー ######出力###### リーリーイラスト
長さ 1 のプレフィックスでは、最大の文字は「p」で、-1 にマップされます。したがって、更新された文字列は「orogress」になります。
長さ 2 のプレフィックスでは、最大文字は「r」で、マッピングは -1 です。したがって、更新された文字列は「nqogress」になります。
長さ 3 のプレフィックスでは、最大の文字は「q」で、マッピング値は 1 です。したがって、更新された文字列は「orpgress」になります。
すべての作業が完了すると、最終的な文字列は「pqmfpdqr」になります。これには、「f」が 1 つ、「p」が 2 つ、「q」が 2 つ、「m」が 1 つ、「d」が 1 つ含まれます「だ」「る」。出力では、結果の文字列内の各文字の頻度を出力します。
- ######入力###### リーリー ######出力###### リーリー 説明 - すべての操作を実行すると、最終的な文字列は「ac」となり、各文字の頻度が出力されます。
-
方法 1
このメソッドでは、文字列を反復処理し、インデックス P に等しい K の値を取得します。その後、長さが P に等しいプレフィックスを取得し、最大の文字を見つけて、マップされた値を取得し、それに応じてすべてのプレフィックス文字を更新します。
ステップ 1 - 「max_char」変数を定義して、指定されたプレフィックスの最大文字数を保存します。
ステップ 2 - 同様に、最終的な文字列内の各文字の頻度を保存するために、長さ 26 のリストをゼロで初期化します。
ステップ 3- 文字列のループを開始し、ループ内で「max_char」変数を 96 で初期化します。
ステップ 4- ネストされたループを使用して、長さ p の接頭辞から最大の文字を見つけます。
ステップ 5- max_char のマップされた値を追加して、プレフィックスの各文字を更新します。
ステップ 7- 更新された文字が「a」より小さい場合は、「z」に更新します。
ステップ 8- 更新された文字が「z」より大きい場合は、「a」に更新します。
ステップ 9- 最後に、更新された文字列をループして、各文字の頻度をリストに保存します。
ステップ 10- 文字の頻度を出力します。 ###例### リーリー ###出力### リーリー
時間計算量- 文字列を走査するために 2 つのネストされたループを使用するため、O(N*N)。
空間複雑度- O(1)。文字の頻度を保存するために定数空間を使用するためです。 ###結論は### 入力文字列に対して指定された操作を実行し、更新された文字列の文字頻度を出力に出力します。プログラマは、リストを使用する代わりに C のマップを使用して文字の頻度を保存することもできます。さらに練習するために、プログラマは、更新された文字列内の各文字の累積頻度を出力してみることができます。
以上が記述された操作を実行した後の、長さ 1 ~ N の各プレフィックス内の各小文字の数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

C#とCの歴史と進化はユニークであり、将来の見通しも異なります。 1.Cは、1983年にBjarnestrostrupによって発明され、オブジェクト指向のプログラミングをC言語に導入しました。その進化プロセスには、C 11の自動キーワードとラムダ式の導入など、複数の標準化が含まれます。C20概念とコルーチンの導入、将来のパフォーマンスとシステムレベルのプログラミングに焦点を当てます。 2.C#は2000年にMicrosoftによってリリースされました。CとJavaの利点を組み合わせて、その進化はシンプルさと生産性に焦点を当てています。たとえば、C#2.0はジェネリックを導入し、C#5.0は非同期プログラミングを導入しました。これは、将来の開発者の生産性とクラウドコンピューティングに焦点を当てます。

C#とCおよび開発者の経験の学習曲線には大きな違いがあります。 1)C#の学習曲線は比較的フラットであり、迅速な開発およびエンタープライズレベルのアプリケーションに適しています。 2)Cの学習曲線は急勾配であり、高性能および低レベルの制御シナリオに適しています。

オブジェクト指向プログラミング(OOP)のC#とCの実装と機能には大きな違いがあります。 1)C#のクラス定義と構文はより簡潔であり、LINQなどの高度な機能をサポートします。 2)Cは、システムプログラミングと高性能のニーズに適した、より細かい粒状制御を提供します。どちらにも独自の利点があり、選択は特定のアプリケーションシナリオに基づいている必要があります。

XMLからCへの変換とデータ操作の実行は、次の手順で達成できます。1)TinyXML2ライブラリを使用してXMLファイルを解析する、2)データのデータ構造にデータをマッピングし、3)データ操作のためのSTD :: VectorなどのC標準ライブラリを使用します。これらの手順を通じて、XMLから変換されたデータを処理および効率的に操作できます。

C#は自動ガベージコレクションメカニズムを使用し、Cは手動メモリ管理を使用します。 1。C#のゴミコレクターは、メモリを自動的に管理してメモリの漏れのリスクを減らしますが、パフォーマンスの劣化につながる可能性があります。 2.Cは、微細な管理を必要とするアプリケーションに適した柔軟なメモリ制御を提供しますが、メモリの漏れを避けるためには注意して処理する必要があります。

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

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


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

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

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
