C++ で (可能であれば) 文字を並べ替えて回文を形成する
任意の長さの文字列 'str' が与えられます。ここでのタスクは、指定された入力文字列に文字を追加または削除せずに、出力が回文文字列になるように文字を再配置することです。回文文字列とは、文字が最初から最後まで同じように聞こえるように配置されているものです。
このためのさまざまな入出力シナリオを見てみましょう -
入力 - String str = "itnin"
出力 - 可能であれば、回文文字列を形成するための文字の再配置は次のとおりです。 nitin
説明 - string 型の変数が与えられており、str であると想定されます。次に、入力文字列の文字を再配置して回文文字列にします (
でない場合)。 可能な場合は「NOT POSSIBLE」が返されます。したがって、入力文字列を指定した場合の出力は「nitin」になります。Input - String str = "baaaba"
Output - 回文を形成するために文字を再配置した結果は次のとおりです: aabbaa
説明 - str であると仮定して、文字列型の変数が与えられます。次に、入力文字列の文字を再配置して回文文字列にし、それが不可能な場合は「NOT POSSIBLE」を返します。したがって、入力文字列を指定した場合の出力は「aabbaa」になります。
以下のプログラムで使用するメソッドは次のとおりです。
文字列型の変数を str として入力し、文字列のサイズを計算して格納します。名前は長さの変数です。
データを関数 Rearrangement(str, length) に渡します。
-
関数 Rearrangement(arr, length) の内部
#「um」という名前の unowned_map 型変数を作成します。この変数には、char と integer の型が格納されます。キーと値のペア。
整数型変数 total を宣言し、0 に設定します。
文字型変数 'ch' と文字列型変数 str_1 と str_2 を作成します。
i が長さ未満になるまで、i から 0 までループを開始します。ループ内で、値 1 を増分して um[str[i]] を設定します。
FOR のループを開始して、マップ 'um' を反復します。ループ内で、it.second % 2 が 0 に等しくないことを確認し、total を 1 増やして ch を it.first に設定します。
total が 1 より大きいか、または total = 1 かつ length % 2 = 0 であるかどうかを確認すると、0 が返されます。
FOR のループを開始して、マップ 'um' を反復します。ループ内で、str(it.second / 2, it.first) を str に、str_1 を str_1 str に、str_2 を str str_2 に設定します。
IF total = 1 を確認し、str_1 ch str_2 を返します。それ以外の場合は、str_1 str_2 が返されます。
- #結果を印刷します。
#include <bits/stdc++.h>
using namespace std;
string Rearrangement(string str, int length){
unordered_map<char, int> um;
int total = 0;
char ch;
string str_1 = "";
string str_2 = "";
for (int i = 0; i < length; i++){
um[str[i]]++;
}
for(auto it : um){
if(it.second % 2 != 0){
total++;
ch = it.first;
}
}
if(total > 1 || total == 1 && length % 2 == 0){
return 0;
}
for(auto it : um){
string str(it.second / 2, it.first);
str_1 = str_1 + str;
str_2 = str + str_2;
}
if(total == 1){
return str_1 + ch + str_2;
}
else{
return str_1 + str_2;
}
}
int main(){
string str = "itnin";
int length = str.size();
cout<<"Rearrangement of characters to form palindrome if possible is: "<<Rearrangement(str, length);
return 0;
}
ログイン後にコピー
出力上記のコードを実行すると、次の出力が生成されます#include <bits/stdc++.h> using namespace std; string Rearrangement(string str, int length){ unordered_map<char, int> um; int total = 0; char ch; string str_1 = ""; string str_2 = ""; for (int i = 0; i < length; i++){ um[str[i]]++; } for(auto it : um){ if(it.second % 2 != 0){ total++; ch = it.first; } } if(total > 1 || total == 1 && length % 2 == 0){ return 0; } for(auto it : um){ string str(it.second / 2, it.first); str_1 = str_1 + str; str_2 = str + str_2; } if(total == 1){ return str_1 + ch + str_2; } else{ return str_1 + str_2; } } int main(){ string str = "itnin"; int length = str.size(); cout<<"Rearrangement of characters to form palindrome if possible is: "<<Rearrangement(str, length); return 0; }
Rearrangement of characters to form palindrome if possible is: nitin
以上がC++ で (可能であれば) 文字を並べ替えて回文を形成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









文字が数字かどうかを判断するには、Java の Character.isDigit() 関数を使用します。文字はコンピュータ内部で ASCII コードの形式で表されます。各文字には対応する ASCII コードがあります。このうち、0~9の数字に対応するASCIIコードの値は、それぞれ48~57となります。文字が数値かどうかを判断するには、Java の Character クラスによって提供される isDigit() メソッドを使用できます。 isDigit() メソッドは Character クラスに属します

オートコレクトを使用して Word で矢印を入力する方法 Word で矢印を入力する最も速い方法の 1 つは、定義済みのオートコレクト ショートカットを使用することです。特定の一連の文字を入力すると、Word はそれらの文字を矢印記号に自動的に変換します。この方法を使用すると、さまざまな矢印スタイルを描画できます。 Word でオートコレクトを使用して矢印を入力するには: 矢印を表示する文書内の位置にカーソルを移動します。次の文字の組み合わせのいずれかを入力します。 入力した文字を矢印記号に修正したくない場合は、キーボードのバックスペース キーを押してください。

上付き文字は、通常のテキスト行の少し上に設定する必要がある、文字または数字の 1 つまたは複数の文字です。たとえば、1st と書く必要がある場合、st の文字は 1 の文字より少し高い位置にある必要があります。同様に、下付き文字は文字のグループまたは単一の文字であり、通常のテキスト レベルよりわずかに低く設定する必要があります。たとえば、化学式を書くときは、通常の文字行の下に数字を配置する必要があります。次のスクリーンショットは、上付き文字と下付き文字の書式設定の例をいくつか示しています。難しい作業のように思えるかもしれませんが、テキストに上付き文字と下付き文字の書式を適用するのは実際には非常に簡単です。この記事では、上付き文字または下付き文字を使用してテキストを簡単に書式設定する方法をいくつかの簡単な手順で説明します。この記事を楽しんで読んでいただければ幸いです。 Excelで上付き文字を適用する方法

物理キーボードまたは数字キーボードでは、表面上に提供される文字オプションの数が限られています。ただし、iPhone、iPad、Mac ではアクセント付き文字や特殊文字などにアクセスする方法がいくつかあります。標準の iOS キーボードを使用すると、大文字、小文字、標準の数字、句読点、文字にすばやくアクセスできます。もちろん他にもたくさんのキャラクターがいます。発音記号を含む文字から逆さまの疑問符まで選択できます。隠れた特殊文字を見つけてしまったかもしれません。そうでない場合は、iPhone、iPad、Mac でアクセスする方法を次に示します。 iPhone および iPad で拡張文字にアクセスする方法 iPhone または iPad で拡張文字を取得するのは非常に簡単です。 「お知らせ」には「

matplotlib で中国語の文字を正しく表示することは、多くの中国人ユーザーがよく遭遇する問題です。デフォルトでは、matplotlib は英語フォントを使用するため、中国語の文字を正しく表示できません。この問題を解決するには、正しい中国語フォントを設定し、それを matplotlib に適用する必要があります。以下は、matplotlib で中国語の文字を正しく表示するのに役立ついくつかの具体的なコード例です。まず、必要なライブラリをインポートする必要があります: importmatplot

この記事では、母音をそれぞれのインデックスでアルファベット順に並べ替えることによって、C++ で指定された文字列を変更する方法について説明します。また、この問題を解決するために使用される方法についても説明し、テストケースを含む例を示します。問題文 文字列を指定して、それぞれのインデックスの母音をアルファベット順に並べ替えます。文字列内の子音は元の順序を維持する必要があります。たとえば、文字列「tutorialspoint」を指定すると、出力は「tatiriolspount」となるはずです。方法 この問題は、簡単なアルゴリズムを使用して解決できます。まず、指定された文字列内のすべての母音をそれぞれの順序で含む別の文字列を作成します。次に、その文字列をアルファベット順に並べ替えることができます。やっと、

Golang を使用して文字が文字であるかどうかを判断する方法 Golang では、Unicode パッケージの IsLetter 関数を使用して、文字が文字であるかどうかを判断できます。 IsLetter 関数は、指定された文字が文字であるかどうかを確認します。次に、Golangを使って文字かどうかを判定するコードを書く方法を詳しく紹介します。まず、コードを記述する新しい Go ファイルを作成する必要があります。ファイルに「main.go」という名前を付けることができます。コード

Java における Enter キーの文字表現は ` です。 Java では、` は改行文字を表し、この文字が出現するとテキスト出力が折り返されます。以下は、`` を使用して Enter キーを表す方法を示す簡単なコード例です。 publicclassMain{publicstaticvoidmain(String[]args){System.out.println("これは、この最初の行です。
