原创博文,转载请注明出处!
# 题目
# 思路
两次翻转,首先整个句子翻转,然后单词翻转。
# 代码
class Solution { public: string ReverseSentence(string str) { // 特殊输入 int len=str.length(); if(len==0) return ""; // 翻转句子 Reverse(str,0,len-1); // 翻转单词 int i=0;//辅助变量(单词的第一个字母的索引) int j=0;//辅助变量(单词的最后一个字母的索引的下一个索引) while(i<len) { if(str[i]==' ') { i++; j++; } if(str[j]!=' ' && str[j]!=' ') { ++j; } else { Reverse(str,i,--j); i=++j; } } return str; } // 翻转 void Reverse(string &str,int pstart,int pend) { while(pstart < pend) { char temp=str[pstart]; str[pstart]=str[pend]; str[pend]=temp; pstart++; pend--; } } };