您的位置:首页 > 其它

Reverse Words in a String

2014-04-24 10:57 387 查看
Given an input string, reverse the string word by word.

For example,
Given s = "
the sky is blue
",
return "
blue is sky the
".

class Solution {
public:
void reverseWords(string &s) {
reverseWords1(s);
}

void reverseWords1(string &s) {
istringstream is(s);
string word;
vector<string> vs;
while (is >> word) vs.push_back(word);
reverse(vs.begin(), vs.end());
ostringstream os;
for (int i = 0; i < vs.size(); i++) {
if (i != 0) os << " ";
os << vs[i];
}
s = os.str();
}

void reverseWords2(string &s) {
string res;
int i = s.size() - 1;
while (i >= 0) {
while (i >= 0 && s[i] == ' ') i--;
if (i < 0) break;
string tmp;
while (i >= 0 && s[i] != ' ') tmp.push_back(s[i--]);
reverse(tmp.begin(), tmp.end());
if (!res.empty()) res.push_back(' ');
res.append(tmp);
}
s = res;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: