class Solution {
public:
void reverseWords(string &s) {
int len = s.size();
// erase the spaces
int k = len - 1;
for (int i = len - 1; i >= 0; --i) {
if (s[i] != ' ') continue;
--i;
int cnt = 0;
while (i >= 0 && s[i] == ' ') {
++cnt;
--i;
}
s.erase(i + 1, cnt);
}
len = s.size();
if (s[len - 1] == ' ') s.erase(len - 1, 1);
if (s[0] == ' ') s.erase(0, 1);
len = s.size();
for (int i = 0; i < len / 2; ++i) {
swap(s[i], s[len - 1 - i]);
}
int beg = 0;
int i = 0;
while (i < s.size()) {
if (s[i] == ' ') {
++i;
}
beg = i;
while (i < s.size() && s[i] != ' ') {
++i;
}
for (int j = 0; j < (i - beg)/ 2; ++j) {
swap(s[beg + j], s[i - 1 - j] );
}
}
}
};
Leetcode 151. Reverse Words in a String
最新推荐文章于 2024-09-18 11:04:20 发布