我們得到一個任意給定長度的字串「str」。任務是以這樣的方式重新排列字符,使得在不從給定輸入字串中添加或刪除字符的情況下,將有最大的子字串成為回文字串。回文字串是字元以從頭到尾發音相同的方式排列的字串。
輸入− string str = "itnin"
#輸出− 重新排列字串以最大化回文子字串的數量為:iinnt。
解釋- 我們得到一個字串類型變量,比如說 str。現在我們將重新排列輸入字串的字符,使其成為最大回文字串,如果不可能,則返回“NOT POSSIBLE”。因此,給定輸入字串的輸出為“iinnt”。輸入− string str = "abaaaabb"
#輸出 − 重新排列字串以最大化回文子字串的數量是:aaaaabbb。
解釋 − 我們給出一個字串類型變量,比如說 str。現在我們將重新排列輸入字串的字符,使其成為最大回文字串,如果不可能,則返回“NOT POSSIBLE”。所以給定輸入字串的輸出是aaaaabbb'
輸入字串變數假設輸入str 並計算字串的大小並將其儲存在名為length 的變數中。
將資料傳遞給函數 Rearr_string(str, length)。
在函數Rearr_string(str, length) 內部
宣告一個大小為26 的整數型別例如說arr[26] 並用0初始化它。
宣告一個字串類型的暫存變數「temp」。
開始從 i 到 0 迴圈 FOR,直到 i 小於 length。在循環內,設定 arr[str[i] - 'a'] 。
開始迴圈 FOR,從 i 到 0,直到 i 小於 26。在循環內,開始另一個從 j 到 0 的 FOR 循環,直到 j 小於 arr[i]。在循環內,將 temp 設定為 temp (char)(97 i)。
傳回 temp。
列印結果。
#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] - 'a']++; } 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中文網其他相關文章!