"test.cpp"
<span style="font-size:18px;"><strong><span style="font-size:18px;"><strong>#include<iostream>
using namespace std;
#include<string>
string Reversal(string str,int p,int l)
{
int left = p;
int right = p + l -1;
while(left < right)
{
swap(str[left],str[right]);
left++;
right--;
}
left = p;
right = p + l - 1;
string strtmp;
for(int i = left;i <= right;i++)
{
strtmp.push_back(str[i]);
}
return strtmp;
}
void test()
{
string str;
cin>>str;
int count = 0;
cin>>count;
while(count--)
{
int p = 0;
int l = 0;
cin>>p>>l;
str += Reversal(str,p,l);
}
if(str.length() > 1000)
{
return;
}
cout<<str<<endl;
}
int main()
{
test();
system("pause");
return 0;
}</strong></span></strong></span>
以上代码没有完全理解题意,翻转后的字符串是在子字符串后面插入,不是在字符串最后插入,所以程序是不对的
下面是改正以后(包括优化)的代码
"test.cpp"
<span style="font-size:18px;"><strong>#include<iostream>
using namespace std;
#include<string>
//#include <vector>
#include<algorithm>
void test()
{
string str;
cin>>str;
int count = 0;
cin>>count;
while(count--)
{
int p = 0;
int l = 0;
cin>>p>>l;
string strtmp = str.substr(p,l);
reverse(strtmp.begin(),strtmp.end());
int index = p + l;
str.insert(index,strtmp);
}
if(str.length() > 1000)
{
return;
}
cout<<str<<endl;
}
int main()
{
test();
system("pause");
return 0;
}</strong></span>