Given an input string, reverse the string word by word.
For example,
Given s = "the sky is blue
",
return "blue is sky the
".
这道题没什么好说的,从后向前取,然后把读到的单词reverse就可以了。
本来准备用栈的,但是发现没那么复杂。
这里面得注意用到string的几个重载和方法会把问题变得特别容易。
#include <iostream>
#include <string>
#include <stack>
using namespace std;
class Solution
{
public:
void reverseWords(string &s)
{
string st;
for (int i = s.length() - 1; i >= 0;)
{
while (i >= 0 && s.at(i) == ' ')
i--;
if (i < 0)
break;
if (!st.empty())
st.push_back(' ');
string t;
while (i >= 0 && s.at(i) != ' ')
t.push_back(s.at(i--));
reverse(t.begin(), t.end());
st = st + t;
cout << 'a' << endl;
}
s = st;
}
};
int main()
{
Solution a;
string str;
string str1 = "the sky is blue ";
a.reverseWords(str1);
system("PAUSE");
return 0;
}