1. 程式人生 > >substr函式以及reserve函式

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;
}