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.
Answer:
class Solution {
public:
void reverseWords(string &s) {
if(!s.empty())
{
stack<string> sta;
istringstream f(s);
string str;
// while(getline(f, str, ' '))
// {
// if (str > " ")
// {
// sta.push(str);
// }
// }
while(f >> str)
{
sta.push(str);
}
string temp = "";
bool em = true;
while (!sta.empty())
{
if (!em)
{
temp += " ";
}
temp += sta.top();
sta.pop();
em = false;
}
s = temp;
}
}
};

本文介绍了一种算法,用于将输入字符串中的单词顺序进行反转。通过使用堆栈数据结构,该算法可以有效地实现单词级别的反转,同时处理多个空格及前后空白字符。
498

被折叠的 条评论
为什么被折叠?



