方法一:
int main()
{
string ptr;
int m;
cin>>ptr>>m;
reverse(ptr.begin(),ptr.begin()+m);
cout<<ptr<<endl;
reverse(ptr.begin()+m,ptr.end());
cout<<ptr<<endl;
reverse(ptr.begin(),ptr.end());
cout<<ptr<<endl;
return 0;
}
方法二:
void Reverse(char *begin,char *end)
{
if(begin==NULL||end==NULL)
{
return;
}
while(begin<end)
{
char temp=*begin;
*begin=*end;
*end=temp;
begin++;
end--;
}
}
void StringReverse(char str[],int m)
{
int size=strlen(str);
if(size<m)
return;
Reverse(str,str+m-1);
Reverse(str+m,str+size-1);
Reverse(str,str+size-1);
}
注意:String容器中end()指向的是最后一个字符的下一个位置。
故在用函数库的reverse的函数要注意
reverse(ptr.begin(),ptr.begin()+m);
reverse(ptr.begin()+m,ptr.end());
reverse(ptr.begin(),ptr.end());
而我们自己写的函数reverse则是end指向最后字符。