题目描述:
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
分析:
同上一题的解法。剑指Offer——左旋转字符串。
代码:
1 class Solution { 2 public: 3 string ReverseSentence(string str) { 4 int strLen = str.length(); 5 int i = 0, j = 0; 6 for(int k = 0; k < strLen; k++) { 7 while(k < strLen && str[k] == ' ') k++; 8 i = k; 9 while(k < strLen && str[k] != ' ') k++; 10 j = k - 1; 11 ReverseString(str, i, j); 12 } 13 ReverseString(str, 0, strLen - 1); 14 return str; 15 } 16 void ReverseString(string &str, int left, int right) { 17 while(left < right) swap(str[left++], str[right--]); 18 } 19 };