题目描述
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
先整体全部翻转,然后对于空格为间隔判断局部,局部翻转(这样就不用单独考虑句号的事情)
以结尾标志 为循环结束
class Solution { public: void Reverse(string &str,int begin,int end){ while(begin < end){ swap(str[begin++],str[end--]); } } string ReverseSentence(string str) { /*//CLion能过 这里面过不了 if(str=="")return str; string tmp; string ans; for(int i=0 ; i<=str.length(); ++i){ if(str[i-1]=='.'){//句子尾 就不添加空格 ans += tmp ; tmp = ""; continue ; } if(str[i] == ' ' || str[i] == ' '){ tmp +=" "; ans = tmp + ans ; tmp = ""; continue ; } tmp += str[i]; } return ans;*/ int len = str.length(); if(len == 0) return ""; int begin=0; int end=0; //先整体全部翻转 Reverse(str,0,len-1); begin=end=0; while(str[begin]!='