substr函数以及reserve函数

str.substr函数

string str="123456789";

string str2=str.substr(0,5);//能够给返回str字符串中位置索引从0到5的字符串

cout<<str2<<endl;

输出结果:12345

reserve函数

string str3=reverse(str.begin(),str.end());//起到翻转作用

cout<<str3<<endl;

输出结果:987654321

注意:reverse函数只适用于vector和string类型

应用实例:

 
  

回文串

题目描述

给定一个字符串,问是否能够通过添加一个字母将其变成“回文串”。 “回文串”是指正着和反着读都一样的字符串。如:”aa”,”bob”,”testset”是回文串,”alice”,”time”都不是回文串。

输入

一行一个有小写字母构成的字符串,字符串长度不超过10。


样例输入

coco


输出

如果输入字符串可以通过添加一个字符,则输出”YES”,否则输出”NO”。


样例输出

YES


时间限制 C/C++语言:1000MS 其它语言:3000MS
内存限制 C/C++语言:65536KB 其它语言:589824KB

思路:添加的字符不确定是在头部,尾部,还是字符串之中,因此需要在字符串中采用循环

程序:

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
string str;
cin >> str;//给定一个字符串
string str2, str3;
bool flag = false;
for (int i = 0; i < str.size(); i++)
{
if (i == 0)//将字符添加在头部的情况
str2 = str[str.size() - 1] + str.substr(0, str.size());
else if (i == str.size() - 1)     //将字符添加在尾部的情况
str2 = str.substr(0, str.size()) + str[0];
else//添加字符存在字符串间
str2 = str.substr(0, i) + str[str.size() - i] + str.substr(i, str.size() - i);
str3 = str2;
reverse(str3.begin(), str3.end());//若str3翻转后与str2相等,则说明是回文串
if (str3 == str2)
{
flag = true;
break;
}
}
if (flag == true)
cout << "Yes" << endl;
else
cout << "No" << endl;
system("pause");
return 0;
}

猜你喜欢

转载自blog.csdn.net/Jum_Summer/article/details/80591661