1、问题描述:
Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue",
return "blue is sky the".
Clarification:
What constitutes a word?
A sequence of non-space characters constitutes a word.
一串非空字符组成单词
Could the input string contain leading or trailing spaces?
Yes. However, your reversed string should not contain leading or trailing spaces.
输入字符串的首尾都可能包含空格,但是翻转后的字符串不要有
How about multiple spaces between two words?
Reduce them to a single space in the reversed string.
应该处理两单词间连续多个空格的情况,使其只包含一个
2、问题求解:
方法一:O(n)时间,并且需要辅助空间O(n)
class Solution {
public:
void reverseWords(string &s) {
//如s为“the sky”
int n=s.size();
int i=n-1;
//辅助字符串存放结果字符串
string stmp="";//最后为“sky the”
while(i >= 0)
{
while(s[i]==' ' && i>=0)
{
//(1)处理连续有多个空格的情况
i--;
}