搜尋
首頁後端開發C++將字元重新排列以形成回文(如果可能)在C++中
將字元重新排列以形成回文(如果可能)在C++中Sep 09, 2023 pm 03:57 PM
字元重新排列回文

將字元重新排列以形成回文(如果可能)在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中文網其他相關文章!

陳述
本文轉載於:tutorialspoint。如有侵權,請聯絡admin@php.cn刪除
如何在 Word 中键入箭头如何在 Word 中键入箭头Apr 16, 2023 pm 11:37 PM

如何使用自动更正在 Word 中键入箭头在 Word 中键入箭头的最快方法之一是使用预定义的自动更正快捷方式。如果您键入特定的字符序列,Word 会自动将这些字符转换为箭头符号。您可以使用此方法绘制多种不同的箭头样式。要使用自动更正在 Word 中键入箭头:将光标移动到文档中要显示箭头的位置。键入以下字符组合之一:如果您不希望将您键入的内容更正为箭头符号,请按键盘上的退格键会将

如何在 Microsoft Excel 中应用上标和下标格式选项如何在 Microsoft Excel 中应用上标和下标格式选项Apr 14, 2023 pm 12:07 PM

上标是一个字符或多个字符,可以是字母或数字,您需要将其设置为略高于正常文本行。例如,如果您需要写1st,则字母st需要略高于字符1。同样,下标是一组字符或单个字符,需要设置为略低于正常文本级别。例如,当你写化学式时,你需要把数字放在正常字符行的下方。以下屏幕截图显示了上标和下标格式的一些示例。尽管这似乎是一项艰巨的任务,但实际上将上标和下标格式应用于您的文本非常简单。在本文中,我们将通过一些简单的步骤说明如何轻松地使用上标或下标格式设置文本。希望你喜欢阅读这篇文章。如何在 Excel 中应用上标

如何在 iPhone 和 Mac 上输入扩展字符,例如度数符号?如何在 iPhone 和 Mac 上输入扩展字符,例如度数符号?Apr 22, 2023 pm 02:01 PM

您的物理或数字键盘在表面上提供有限数量的字符选项。但是,有几种方法可以在iPhone、iPad和Mac上访问重音字母、特殊字符等。标准iOS键盘可让您快速访问大写和小写字母、标准数字、标点符号和字符。当然,还有很多其他角色。您可以从带有变音符号的字母到倒置的问号中进行选择。您可能无意中发现了隐藏的特殊字符。如果没有,以下是在iPhone、iPad和Mac上访问它们的方法。如何在iPhone和iPad上访问扩展字符在iPhone或iPad上获取扩展字符非常简单。在“信息”、“

使用java的Character.isDigit()函数判断字符是否为数字使用java的Character.isDigit()函数判断字符是否为数字Jul 27, 2023 am 09:32 AM

使用Java的Character.isDigit()函数判断字符是否为数字字符在计算机内部以ASCII码的形式表示,每个字符都有一个对应的ASCII码。其中,数字字符0到9分别对应的ASCII码值为48到57。要判断一个字符是否为数字,可以使用Java中的Character类提供的isDigit()方法进行判断。isDigit()方法是Character类的

正确在matplotlib中显示中文字符的方法正确在matplotlib中显示中文字符的方法Jan 13, 2024 am 11:03 AM

在matplotlib中正确地显示中文字符,是很多中文用户常常遇到的问题。默认情况下,matplotlib使用的是英文字体,无法正确显示中文字符。为了解决这个问题,我们需要设置正确的中文字体,并将其应用到matplotlib中。下面是一些具体的代码示例,帮助你正确地在matplotlib中显示中文字符。首先,我们需要导入需要的库:importmatplot

通过按照元音字母在字符串中的索引位置重新排列,修改字符串通过按照元音字母在字符串中的索引位置重新排列,修改字符串Sep 06, 2023 pm 06:53 PM

在本文中,我们将讨论如何通过在各自索引处按字母顺序重新排列元音来修改C++中的给定字符串。我们还将解释用于解决此问题的方法,并提供带有测试用例的示例。问题陈述给定一个字符串,按字母顺序在各自的索引处重新排列元音。字符串中的辅音应保持其原始顺序。例如,给定字符串“tutorialspoint”,输出应为“tatiriolspount”。方法这个问题可以使用简单的算法来解决。我们可以首先创建一个单独的字符串,其中按各自的顺序包含给定字符串中的所有元音。然后我们可以按字母顺序对该字符串进行排序。最后,

如何使用Golang判断一个字符是否为字母如何使用Golang判断一个字符是否为字母Dec 23, 2023 am 11:57 AM

如何使用Golang判断一个字符是否为字母在Golang中,判断一个字符是否为字母可以通过使用Unicode包中的IsLetter函数来实现。IsLetter函数会检查给定的字符是否是一个字母。接下来,我们将详细介绍如何使用Golang编写代码来判断一个字符是否为字母。首先,你需要创建一个新的Go文件,用于编写代码。你可以将文件命名为"main.go"。代码

有关Java中回车键的字符表示,请问是哪一个?有关Java中回车键的字符表示,请问是哪一个?Mar 29, 2024 am 11:48 AM

Java中回车键的字符表示是`。在Java中,`表示换行符,当遇到这个字符时,文本输出会换行。下面是一个简单的代码示例,演示如何使用``来表示回车键:publicclassMain{publicstaticvoidmain(String[]args){System.out.println("这是第一行这

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具