將字元重新排列以形成回文(如果可能)在C++中
我們被給定一個長度為任意給定長度的字串'str'。任務是重新排列字符,使輸出成為一個回文字串,而不添加或刪除給定輸入字串中的字符。回文字串是指字元以一種方式排列,使得它們從開始到結束發音相同。
讓我們看看這個的各種輸入輸出場景-
輸入 - 字串str = "itnin"
#輸出 - 如果可能,字元的重新排列形成回文字串是:nitin
解釋 - 我們被給定一個字串類型的變量,假設為str。現在我們將重新排列輸入字串的字符,使其成為一個回文字串,如果不是的話
如果可能,它將返回'NOT POSSIBLE'。因此,給定輸入字串的輸出為'nitin'。輸入 - 字串str = "baaaba"
#輸出 - 可能的字元重新排列形成回文的結果是:aabbaa
解釋 - 我們給定一個字串類型的變量,假設為str。現在我們將重新排列輸入字串的字符,使其成為回文字串,如果不可能,則返回'NOT POSSIBLE'。因此,給定輸入字串的輸出為'aabbaa'。
下面程式中使用的方法如下
輸入字串類型的變量,假設為str,併計算字串的大小,將其儲存在一個名為length的變數中。
將資料傳遞給函數Rearrangement(str, length)。
-
在函數Rearrangement(arr, length)內部
建立一個名為'um'的unordered_map類型變量,它儲存char和integer類型的鍵值對。
宣告一個整數型別變數total,並將其設為0。
建立一個字元類型變數'ch'和字串類型變數str_1和str_2。
從i到0的迴圈開始,直到i小於length。在循環內,透過遞增值1設定um[str[i]]。
開始循環FOR來迭代map 'um'。在循環內,檢查IF it.second % 2不等於0,則將total增加1,並將ch設為it.first。
檢查IF total大於1或total = 1且length % 2 = 0,則回傳0。
開始循環FOR來迭代map '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; }
輸出
如果我們執行上述程式碼,將會產生以下輸出
Rearrangement of characters to form palindrome if possible is: nitin
以上是將字元重新排列以形成回文(如果可能)在C++中的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

使用Java的Character.isDigit()函數判斷字元是否為數字字元在電腦內部以ASCII碼的形式表示,每個字元都有一個對應的ASCII碼。其中,數字字元0到9分別對應的ASCII碼值為48到57。要判斷一個字元是否為數字,可以使用Java中的Character類別提供的isDigit()方法來判斷。 isDigit()方法是Character類別的

如何使用自動更正在 Word 中鍵入箭頭在 Word 中鍵入箭頭的最快方法之一是使用預先定義的自動修正捷徑。如果您鍵入特定的字元序列,Word 會自動將這些字元轉換為箭頭符號。您可以使用此方法繪製多種不同的箭頭樣式。若要使用自動更正在 Word 中鍵入箭頭:將遊標移到文件中要顯示箭頭的位置。鍵入以下字元組合之一:如果您不希望將您鍵入的內容更正為箭頭符號,請按鍵盤上的退格鍵會將

上標是一個字符或多個字符,可以是字母或數字,您需要將其設置為略高於正常文本行。例如,如果您需要寫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中回車鍵的字元表示是`。在Java中,`表示換行符,當遇到這個字元時,文字輸出會換行。以下是一個簡單的程式碼範例,示範如何使用``來表示回車鍵:publicclassMain{publicstaticvoidmain(String[]args){System.out.println("這是第一行這
