您的位置:首页 > 其它

【Leetcode】Reverse Words in a String

2014-10-01 11:53 267 查看
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) {
string ret;
int begin = s.size() - 1, len = 0;
while (begin >= 0) {
while (begin >= 0 && s[begin] == ' ') {
--begin;
}
while (begin >= 0 && s[begin] != ' ') {
--begin;
++len;
}
if (len > 0) {
if(ret.empty()) {
ret = s.substr(begin + 1, len);
} else {
ret = ret + " " + s.substr(begin + 1, len);
}
len = 0;
}
}
s = ret;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: