1、问题描述:

例:I am student ------>结果为:student am I

算法思想:

先将整个字符串反转一遍,然后在从头开始,遇到空格的在次进行反转,就可以实现反转字符串中的单词了;


2、代码实现

#include<stdio.h>#include<string.h>#include<ctype.h>voidrevStr(char*str,intfrom,intto);voidfinalRev(char*str);voidfinalRev(char*str){intfrom=0;intto=0;while(str[to]){while(isalpha(str[to])){to++;}revStr(str,from,to-1);while(isspace(str[to])){//针对中间出现多个空格的情况,可以跳跃过去to++;}from=to;}}voidrevStr(char*str,intfrom,intto){chartmp;while(from<to){tmp=str[from];str[from++]=str[to];str[to--]=tmp;}}voidmain(void){charstr[80];char*p=str;intstrLen;intcount=0;inti=0;printf("请输入字符串:\n");gets(str);strLen=strlen(str);revStr(str,0,strLen-1);finalRev(str);puts(str);}


3、结果截图


算法分析:空间复杂度为:O(1);