将字符重新排列以形成回文(如果可能)在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("这是第一行这
