原题目地址:http://www.lintcode.com/zh-cn/problem/reverse-words-in-a-string/
思路分析:这也是一个简单难度的题目,总体思想就是翻转每个单词,然后再将整个字符串翻转;主要的注意点在于——处理好空格。
代码实现:
void ReverseWords(string& strings, string& str)
{
while (!str.empty())
{
int index = str.find_last_of(" ");
if (index != -1)
{
string tmp_str = str.substr(index);
str = str.substr(0, str.size() - tmp_str.size());
reverse(tmp_str.begin(), tmp_str.end());
strings = tmp_str + strings;
}
else
{
reverse(str.begin(), str.end());
strings = str + " " + strings;
break;
}
}
}
string reverseWords(string &s)
{
string result = "";
ReverseWords(result, s);
reverse(result.begin(), result.end());
int index = 0;
while (result[index] == ' ') //字符串翻转完成后,前面可能会出现空格
++index;
result = result.substr(index);
return result;
}