diff options
Diffstat (limited to 'other/reverse_word_string.cpp')
-rw-r--r-- | other/reverse_word_string.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/other/reverse_word_string.cpp b/other/reverse_word_string.cpp new file mode 100644 index 0000000..0259e04 --- /dev/null +++ b/other/reverse_word_string.cpp @@ -0,0 +1,30 @@ +#include "leetcode.h" + +class Solution { +public: + string reverseWords(string s) { + reverse(s.begin(), s.end()); + int l = 0, r = 0, i = 0, n = s.size(); + while (i < n) { + while (i < n && s[i] != ' ') + s[r++] = s[i++]; + if (l < r) { + reverse(s.begin() + l, s.begin() + r); + if (r == n) + break; + s[r++] = ' '; + l = r; + } + ++i; + } + if (r > 0 && s[r - 1] == ' ') + --r; + s.resize(r); + return s; + } +}; + +int main() { + Solution obj; + cout << obj.reverseWords("the sky is blue"); +} |