题解 | #翻转单词序列#C语言

翻转单词序列

http://www.nowcoder.com/practice/3194a4f4cf814f63919d0790578d51f3

```/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param str string字符串 
 * @return string字符串
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
#include<string.h>

char* ReverseSentence(char* str ) {
    // write code here
    char *stack=(char*)malloc(sizeof(char) * 100);//栈,临时保存两个空格之间的字母
    int top=0;//栈顶
    char *res=(char*)malloc(sizeof(char) * 100);//输出结果
    int j=0;//输出结果的索引
    int len=strlen(str);//字符串长度
    int i=len-1;//最后一个字符的索引
    while(i>=0){
		//从str的最后一个字符向第一个字符进行遍历
        if(str[i]!=' '){//如果不是空格,入栈
            stack[top++]=str[i];
        }else{//如果是空格,将栈中的字符全部存入res
            while(top>0)res[j++]=stack[--top];
            res[j++]=' ';
        }
        i--;
    }
   //当i==0时,最后一个字母存入栈中,但没有保存到res
    while(top>0)res[j++]=stack[--top];
    res[j]='\0';
    return res;
}
全部评论

相关推荐

科大讯飞消费者bg二级研究院 语音算法岗 24k*14
点赞 评论 收藏
转发
4 收藏 评论
分享
牛客网
牛客企业服务