C++ で文字列を再配置して回文部分文字列の数を最大化する

PHPz
リリース: 2023-09-13 22:29:02
転載
861 人が閲覧しました

C++ で文字列を再配置して回文部分文字列の数を最大化する

任意の長さの文字列「str」を取得します。タスクは、指定された入力文字列に文字を追加または削除せずに、回文文字列となる最大の部分文字列が存在するように文字を再配置することです。回文文字列は、最初から最後まで同じように聞こえるように配置された文字列です。

この状況におけるさまざまな入出力シナリオを見てみましょう -

Input- string str = "itnin"

Output - 回文部分文字列の数が最大になるように文字列を並べ替えます: iinnt。

説明- 文字列型の変数、たとえば str を取得します。次に、入力文字列の文字を再配置して最大の回文文字列にし、それが不可能な場合は「NOT POSSIBLE」を返します。したがって、入力文字列を指定した場合の出力は「iinnt」になります。

入力- string str = "abaaaabb"

出力 - 回文部分文字列の数を最大化するために文字列を並べ替えると、aaaaabbb となります。

説明 - str などの文字列型変数を与えます。次に、入力文字列の文字を再配置して最大の回文文字列にし、それが不可能な場合は「NOT POSSIBLE」を返します。したがって、指定された入力文字列の出力は aaaaaabbb'

次のプログラムで使用されるメソッドは次のとおりです。

  • 文字列変数を入力します。 str と入力して、文字列のサイズを取得し、それを length という名前の変数に格納します。

  • データを関数 Rearr_string(str, length) に渡します。

  • 関数 Rearr_string(str, length) 内

    • #サイズ 26 の整数型配列 (例: arr[26]) を宣言します。 0を使用して初期化します。

    • 文字列型の一時変数「temp」を宣言します。

    • i が長さ未満になるまで、i から 0 まで FOR のループを開始します。ループ内で、 arr[str[i] - 'a'] を設定します。

    • i が 26 未満になるまで、i から 0 まで FOR のループを開始します。ループ内で、j が arr[i] 未満になるまで、j から 0 への別の FOR ループを開始します。ループ内で、temp を temp (char)(97 i) に設定します。

    • #戻り温度
    #結果を印刷します。
  • #include <bits/stdc++.h>
    using namespace std;
    string Rearr_string(string str, int length){
       int arr[26] = { 0 };
       string temp = "";
       for(int i = 0; i < length; i++){
          arr[str[i] - &#39;a&#39;]++;
       }
       for(int i = 0; i < 26; i++){
          for(int j = 0; j < arr[i]; j++){
             temp = temp + (char)(97 + i);
          }
       }
       return temp;
    }
    int main(){
       string str = "itinn";
       int length = str.length();
       cout<<"Rearrangement of the string to maximize the number of palindromic substrings is: "<<Rearr_string(str, length);
       return 0;
    }
    ログイン後にコピー
出力

上記のコードを実行すると、次の出力が生成されます

Rearrangement of the string to maximize the number of palindromic substrings is: iinnt
ログイン後にコピー

以上がC++ で文字列を再配置して回文部分文字列の数を最大化するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート