Reverse Words in a String III

easy two pointers string

Problem

Given a string s, reverse the order of characters in each word while still preserving whitespace and the initial word order.

Inputs = "Let's take LeetCode contest"
Output"s'teL ekat edoCteeL tsetnoc"
Each word is reversed individually; spaces keep their positions.

def reverse_words(s):
    return ' '.join(word[::-1] for word in s.split(' '))
function reverseWords(s) {
  const arr = s.split('');
  let i = 0;
  while (i < arr.length) {
    let j = i;
    while (j < arr.length && arr[j] !== ' ') j++;
    let l = i, r = j - 1;
    while (l < r) { [arr[l], arr[r]] = [arr[r], arr[l]]; l++; r--; }
    i = j + 1;
  }
  return arr.join('');
}
class Solution {
    public String reverseWords(String s) {
        char[] arr = s.toCharArray();
        int i = 0;
        while (i < arr.length) {
            int j = i;
            while (j < arr.length && arr[j] != ' ') j++;
            int l = i, r = j - 1;
            while (l < r) { char t = arr[l]; arr[l] = arr[r]; arr[r] = t; l++; r--; }
            i = j + 1;
        }
        return new String(arr);
    }
}
string reverseWords(string s) {
    int i = 0, n = s.size();
    while (i < n) {
        int j = i;
        while (j < n && s[j] != ' ') j++;
        int l = i, r = j - 1;
        while (l < r) swap(s[l++], s[r--]);
        i = j + 1;
    }
    return s;
}
Time: O(n) Space: O(1) in-place (excluding output)