/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param str string字符串
 * @return string字符串
 */
//思路二:
//定义两个栈,一个栈1负责中间过渡,栈2负责输出值
//对字符串从后往前判断是否为空格,不为则将将字符压入栈1,为空格则将栈1中的字符弹出到找2中,并将空格压入栈2
//此外最后栈1中还有最后一个字符,还要压入栈2

#include <string.h>
char* ReverseSentence(char* str ) {
    // write code here
    //定义两个栈,一个栈1负责中间过渡,栈2负责输出值
    char* stack1 = (char*)malloc(sizeof(char) * 100);
    int top1 = 0;
    char* stack2 = (char*)malloc(sizeof(char) * 100);
    int top2;

    int n = strlen(str);    //字符数组长度
    int i = n - 1;  //字符数组的下标i

    //对字符串从后往前判断是否为空格,不为则将将字符压入栈1,为空格则将栈1中的字符弹出到找2中,并将空格压入栈2
    while (i >= 0)
     {
        if (str[i] != ' ')
        {
            stack1[top1++] = str[i];
        } 
        else 
        {
            while (top1 > 0)
            {
                stack2[top2++] = stack1[--top1];
            }
            stack2[top2++] = ' ';
        }
        i--;
    }

    //当i==0.最后栈1中还有最后一个字符,没有识别到空格了,还要压入栈2
    while(top1>0)
    {
        stack2[top2++] = stack1[--top1];
    }
    return stack2;
}