Reverse Words

Reverse the words of a sentence while keeping their order. For simplicity, assume there are no punctuations.

void ReverseWords(char *arr, int size)
{
    if (!arr)
        return;
 
    // First reverse the whole array
    ReverseArrayRange(arr, 0, size - 1);
    // Then reverse back each word
    int start = 0;
    for (int i = 0; i < size; i++)
    {
        if (' ' == arr[i])
        {
            ReverseArrayRange(arr, start, i - 1);
            start = i + 1;
        }
    }
}
 
void ReverseArrayRange(char *arr, int start, int end)
{
    if (!arr)
        return;
 
    while (start < end)
    {
        char temp = arr[start];
        arr[start] = arr[end];
        arr[end] = temp;
        start++;
        end--;
    }
}