您的位置:首页 > 其它

LeetCode: Reverse Words in a String

2014-04-28 12:26 302 查看
先来一个需要extra space的

class Solution {
public:
void reverseWords(string &s) {
vector<string> S;
int pre = 0;
string tmp = "";
for (int i = 0; i < s.size(); ++i) {
if (isspace(s[i]) && tmp.size()) {
S.push_back(tmp);
tmp.clear();
}
else if (!isspace(s[i])) tmp += s[i];
}
if (tmp.size()) S.push_back(tmp);
s.clear();
for (int i = S.size()-1; i >= 0; --i) {
if (i == S.size() - 1) s += S[i];
else s = s + " " + S[i];
}
}
};


再来个更好的

class Solution {
public:
void reverseWords(string &s) {
string rs;
for (int i = s.size()-1; i >= 0; ) {
while (i >= 0 && isspace(s[i])) i--;
if (i < 0) break;
if (rs.size()) rs += " ";
string t;
while(i >= 0 && !isspace(s[i])) t += s[i--];
int left = 0;
int right = t.size()-1;
while (left < right) swap(t[left++], t[right--]);
rs += t;
}
s = rs;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: