aboutsummaryrefslogtreecommitdiff
path: root/other/reverse_word_string.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'other/reverse_word_string.cpp')
-rw-r--r--other/reverse_word_string.cpp30
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");
+}