反转字符串中的单词
1、问题描述:
例:I am student ------>结果为:student am I
算法思想:
先将整个字符串反转一遍,然后在从头开始,遇到空格的在次进行反转,就可以实现反转字符串中的单词了;
2、代码实现
#include<stdio.h>
#include<string.h>
#include<ctype.h>
void revStr(char *str, int from, int to);
void finalRev(char *str);
void finalRev(char *str){
int from = 0;
int to = 0;
while(str[to]){
while(isalpha(str[to])){
to++;
}
revStr(str, from, to-1);
while(isspace(str[to])){ //针对中间出现多个空格的情况,可以跳跃过去
to++;
}
from = to;
}
}
void revStr(char *str, int from, int to){
char tmp;
while(from < to){
tmp = str[from];
str[from++] = str[to];
str[to--] = tmp;
}
}
void main(void){
char str[80];
char *p = str;
int strLen;
int count = 0;
int i = 0;
printf("请输入字符串:\n");
gets(str);
strLen = strlen(str);
revStr(str, 0, strLen-1);
finalRev(str);
puts(str);
}
3、结果截图
算法分析:空间复杂度为:O(1);
转载于:https://blog.51cto.com/wait0804/1901276