C++ 最长回文的双字符串
介绍
一段连续的字符序列,包括大写字母、小写字母、重复或唯一的字母数字字符,构成一个C++字符串。每个字符串都被一个唯一的长度参数识别,它可以是奇数或偶数性质。
回文字符串是相同的字符序列从开始到结束遇到的。从开始和结束的等价位置的字符不会有区别。它们可以是偶数长度或奇数长度的回文。奇数长度的回文具有一个中间字符将两个等价的半部分分开。
在本文中,我们将开发一个代码,它以回文字符串作为输入,并计算双字符串。让我们看以下示例以更好地理解这个主题-
示例
示例1:
str : "2tor!@L P0!nt"
Output : torLPnt !@! 20
例如,所有字符都被分组放在输出字符串的开头,之后是所有特殊字符的出现。最后,在输出字符串中出现数字。
语法
str.length()
length()
在C++中,length()方法用于计算字符串中的字符数。它按照线性顺序工作,是不可变的。
str.substr(st, end)
Substr()
The substr()方法用于从开始到结束-1位置访问较大字符串的子字符串。所有要访问的索引应该是连续的并且按顺序。
参数 –
st – 开始位置
end – 终止对子字符串访问的结束位置
str.reverse(str.begin(), str.end())
reverse()
reverse()方法用于改变字符串中字符的顺序。字符从字符串的末尾向开始位置访问。字符串的长度保持不变。
参数 −
str.begin() − 字符串的开始位置
str.end() − 字符串的结束位置
步骤
- 接受输入字符串str作为输入
-
使用length()方法计算字符串的长度,将结果存储在变量len中。
-
同样计算字符串的一半长度,并将结果存储在变量halflen中
-
使用substring()方法从字符串的开始位置到一半长度的位置截取字符串的前半部分,将结果存储在fstr中。
-
如果字符串的长度是偶数,则第二部分字符串从一半长度的索引开始,用sstr表示。
-
否则,第二部分字符串从一半长度+1的索引开始
-
使用内置的reverse()方法翻转得到的sstr的第二部分。
-
将第一部分和第二部分的字符串组合起来,得到双倍字符串。
示例
以下是用于接受一个样本回文字符串作为输入并计算其双倍字符串的C++代码片段 −
//including the required libraries
#include <bits/stdc++.h>
using namespace std;
int double_string(string str) {
int len = str.length();
int halflen = len/2;
string fstr = str.substr(0, halflen);
string sstr = "";
if (len % 2 == 0)
sstr = str.substr(halflen);
else
sstr = str.substr(halflen + 1);
//reversing the second half of string
reverse(sstr.begin(), sstr.end());
// Print the double string
cout << "Output Double String : \n" <<fstr << sstr << endl;
// Print the length of the double string
if (len % 2 == 0)
cout <<"Length of Double String : \n" << len << endl;
else
cout <<"Length of Double String : \n" << len - 1 << endl;
}
int main() {
//declaring an input sample string
string str = "buttub";
cout <<"Input String : \n" << str <<"\n";
double_string(str);
return 0;
}
输出
Input String −:
buttub
Output Double String −
butbut
Length of Double String −:
6
结论
回文是一类重要的字符串,其字符顺序从开头到结尾都相同。因此,回文字符串可以很容易地被分成两部分,其中第一部分和第二部分最多只能相差一个字符。