[leetcode-151-Reverse Words in a String]
Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue",
return "blue is sky the".
Update (2015-02-12):
For C programmers: Try to solve it in-place in O(1) space.
想法很朴素:
1.将单词分出来。
2.类似头插法,将单词插入到新的字符串,就能反过来了。
void reverseWords(string &s) { if (s == "")return; int i = 0; string temp=""; string temp2 = ""; while (s[i]!='\0') { if (s[i] != ' ') { temp.append(s.substr(i, 1)); i++; } else//空格 { if (temp != "") { temp2.insert(0, " "); temp2.insert(0, temp); temp.clear(); } i++; } } temp2.insert(0, " "); temp2.insert(0, temp); cout << temp2.c_str() << endl; temp2.erase(temp2.size()-1, 1);//擦去最后一个空格 cout << temp2.c_str() << endl; s.clear(); s = temp2; i = s.size() - 1; while (s[i] == ' ')//擦除结尾空格 { s.erase(i, 1); i = s.size() - 1; } i = 0; while (s[i] == ' ')//擦除前面空格 { s.erase(i, 1); } }