题目描述:将一个字符串按照单词反转,比如 “the sky is blue” -> “blue is sky the”
解题思路:借助于栈。
- 入栈。将单词分出来,按顺序全部入栈,;
- 出栈。单词出栈,每出一次加一个空格;
- 最后会多一个空格,要取除了最后一个元素的子串;
class Solution {
public:
void reverseWords(string &s)
{
if(s.empty())
return;
stack<string> sta;
string singleword = "";
for(int i = 0; i < s.length(); ++i)
{
if(s[i] != ' ')
{
singleword += s[i];
}
else
{
if(singleword != "")
sta.push(singleword);
singleword = "";
}
}
if(singleword != "")
sta.push(singleword);
s = "";
while(!sta.empty())
{
s += sta.top();
sta.pop();
s += ' ';
}
s = s.substr(0, s.length() - 1);
}
};