实现字符串反转: abcd efgh ijkl ---------> ijkl efgh abcd
思路:
第一步:整体旋转,得lkji hgfe dcba
第二步:分别对三个子段旋转,得ijkl efgh abcd
#include <iostream>
#include<cassert>
#include <cstring>
#include<algorithm>
using namespace std;
void reverse_str(char* str)
{
assert(str != NULL);
reverse(str, str+strlen(str));
char* first = str;
char* last = NULL;
while (*first)
{
while (*first == ' ')
first++;
last = first;
while (*last && *last != ' ')
last++;
reverse(first, last);
first = last;
}
}
int main()
{
char arr[] = "abcd efgh ijkl";
reverse_str(arr);
for (int i=0 ; arr[i]; i++)
{
cout << arr[i] ;
}
cout << endl;
return 0;
}