思路:两次翻转,先整体翻转,再局部翻转
reverse/sort/vector的构造函数等,第二项不包括在内
string也有begin(),end()两个迭代器
string ReverseSentence(string str) {reverse(str.begin(),str.end());int p1 = 0, p2 = 0, len = str.length();while(p1 < len && p2 < len){while(p1 < len && str[p1] == ' ')p1++;p2 = p1;while(p2 < len && str[p2] != ' ')p2++;reverse(str.begin()+p1, str.begin()+p2);p1 = p2;}return str;}//第二种,自己写reversestring ReverseSentence(string str) {int len = str.length();if(len <= 1)return str;Reverse(str,0,len);int p1 = 0, p2 = 0;while(p1 < len && p2 < len){while(p1 < len && str[p1] == ' ')p1++;p2 = p1;while(p2 < len && str[p2] != ' ')p2++;Reverse(str, p1, p2);p1 = p2;}return str;}void Reverse(string &str, int start, int end){int len = end - start;for(int i = 0;i < len / 2;i++){swap(str[start + i], str[start + len - i - 1]);}}
