题意:
给出一串字符串,m次询问,每次输入ai,将ai~s-ai+1的字符串翻转,求m次询问后的字符串
解题思路:
有些部位会重复翻转,先将ai存到数组里面,从小到大排列,从最大的ai开始,如果ai是第奇数个,就翻转,否则不翻转
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std;
#define inf 200005
char str[inf];
int a[inf];
int main()
{
scanf("%s",str+1);
int len = strlen(str+1);
int m,ai;
scanf("%d",&m);
for(int i=1;i<=m;i++)
{
scanf("%d",&a[i]);
}
sort(a+1,a+m+1);
int e = len/2;
for(int i=m;i>=1;i--)
{
if(i%2==1)
{
for(int j=a[i];j<=e;j++)
swap(str[j],str[len-j+1]);
}
e = a[i]-1;
}
printf("%s\n",str+1);
return 0;
}