题目:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
思路:先局部转,逐个单词转,再全局转,例如student. a am I,局部转结果为:.tneduts a ma I 再全局转,结果为I am a student.
class Solution { public: string ReverseSentence(string str) { if (str == "") return str; string::iterator iter1; string::iterator iter2 = str.begin(); for (iter1 = str.begin(); iter1 < str.end() + 1; ++iter1) { if (*iter1 == ' ' || *iter1 == '\0') { reverse(iter2, iter1);//以空格为标志,局部转,逐个单词转 iter2 = iter1 + 1; } } //全局转 reverse(str.begin(),str.end()); return str; } };
