题解 | #翻转单词序列#
翻转单词序列
https://www.nowcoder.com/practice/3194a4f4cf814f63919d0790578d51f3
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @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; }