来源:Leetcode
原帖:https://leetcode.com/problems/reverse-words-in-a-string-ii/
题目:
Given an input string, reverse the string word by word. A word is defined as a sequence of non-space characters. The input string does not contain leading or trailing spaces and the words are always separated by a single space.
For example,
Given s = "the sky is blue", return "blue is sky the".
Could you do it in-place without allocating extra space?
代码:
原帖:https://leetcode.com/problems/reverse-words-in-a-string-ii/
题目:
Given an input string, reverse the string word by word. A word is defined as a sequence of non-space characters. The input string does not contain leading or trailing spaces and the words are always separated by a single space.
For example,
Given s = "the sky is blue", return "blue is sky the".
Could you do it in-place without allocating extra space?
代码:
class Solution {
public:
// in-place reverse
void reverseWords(string &s) {
reverse(s.begin(), s.end());
int end = 0;
for (int i = 0; i < s.size(); ++i) {
if (s[i] == ' ') continue;
if (end != 0) s[end++] = ' ';
int l = i, h = i;
while (i != s.size() && s[i] != ' ') {
h++; i++;
}
reverse(s.begin() + l, s.begin() + h);
for (int j = l; j < h; ++j) {
s[end++] = s[j];
}
}
s.resize(end);
}
};
No comments:
Post a Comment