一、问题描述
一个英文句子中,eg:I love China. 把它按照单词逆序,变成China love I.
二、解题思路
N步反转:
step1:首先一空格为拆分,将字符串分为k个部分(向后取空格的原则);
step2:分别对这k个部分的子串进行反转
step3:最后对字符串整体反转
三、算法代码
/***********************
Author:tmw
date:2018-3-17
***********************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define swap(x,y,t) (t=x,x=y,y=t)
void reverseString( char* str, int front, int end )
{
char temp;
while( front<end )
{
swap(str[front],str[end],temp);
front++;end--;
}
}
void three_steps_reverse( char* str )
{
int i = 0;
int j = 0;
int mark_left,mark_right;
while( i<strlen(str) )
{
while( i<strlen(str)&&str[i]!=' ' )
i++;
/**i此时指向空格,这里将坐标回移**/
i--;
/**保护i、j的游标不被改动**/
mark_left = j;
mark_right = i;
reverseString(str,mark_left,mark_right);
printf("%s\n",str);
j = i + 2; //j指向下一个单词的开头位置
i = j;
}
/**最后整体翻转**/
reverseString(str,0,strlen(str)-1);
}
四、测试代码及结果
int main()
{
printf("测试代码\n");
char str[] = "I love China.";
printf("翻转前:%s\n",str);
three_steps_reverse( str );
printf("翻转后:%s\n",str);
return 0;
}

梦想还是要有的,万一实现了呢~~~ヾ(◍°∇°◍)ノ゙~~~