题目描述
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
解题思路:先将整个字符串进行完全翻转,然后再翻转每个单词
1 class Solution { 2 public: 3 void Reverse(char *pStart, char *pEnd) 4 { 5 if(pStart == NULL || pEnd == NULL) 6 return; 7 while(pStart < pEnd) 8 { 9 char tmp = *pStart; 10 *pStart = *pEnd; 11 *pEnd = tmp; 12 pStart++; 13 pEnd--; 14 } 15 } 16 string ReverseSentence(string str) { 17 if(str.empty()) 18 return str;//此处不能直接return NULL 19 int length = str.size(); 20 char *pStart = &str[0]; 21 char *pEnd = &str[length-1]; 22 //翻转整个字符串 23 Reverse(pStart,pEnd); 24 //翻转每个单词 25 pStart = pEnd = &str[0];//初始设置 26 while(*pStart != '