ホームページ >バックエンド開発 >C++ >C++ プログラム: 指定された文字列を再配置して、K 個の繰り返し文字列を形成します。

C++ プログラム: 指定された文字列を再配置して、K 個の繰り返し文字列を形成します。

王林
王林転載
2023-08-25 17:45:12976ブラウズ

C++ プログラム: 指定された文字列を再配置して、K 個の繰り返し文字列を形成します。

文字列と整数 k が与えられた場合、文字列内の文字を並べ替えて、k 個の類似した部分文字列の連結になるようにする必要があります。これが不可能な場合、出力は「不可能」となります。

リーリー

例 (マップを使用)

文字列「mottom」と K=2 を考えてみましょう。特定の文字列は、tomtom、motmot omtomt などの 2 つの部分文字列の連結として表すことができます。 3 つの部分文字列すべてと同様、k = 2 の場合、2 つの部分文字列が連結されます。

文字列を使用すると、各文字の出現数を判断できます。その後、利用可能なすべての周波数が k で割り切れる場合、それは可能であり、考えられるあらゆる答えを出力できます。そうでなければ不可能です。

上記の例の C 実装は次のとおりです -

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

例 (マップなし)

同じ例の C 実装 (マッピングなし) は次のとおりです -

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

文字を周波数にハッシュするために、map または unowned_map を使用できます。 [26] 配列を使用してラテン小文字を表し、すべての頻度を 0 に設定できます。これは実装ベースの質問であり、unowned_map または hashmap を使用すると、時間計算量は O(n) になります。

以上がC++ プログラム: 指定された文字列を再配置して、K 個の繰り返し文字列を形成します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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